矩阵相乘有关问题中,乘法运算符的重载 系统提示 “*”不是类的成员。本人初学者一只,不知道错哪了,请大牛帮忙指正

矩阵相乘问题中,乘法运算符的重载 系统提示 “*”不是类的成员。。。本人菜鸟一只,不知道哪里错了,请大牛帮忙指正
#include <iostream>
using namespace std;


class Matrix
{
public:
Matrix(int x,int y);
~Matrix();
void Print();
void Input();
Matrix(const Matrix &s);
friend Matrix operator * (const Matrix &s1,const Matrix &s2) ;
private:
int m,n;
double **data;
};



//构造函数
Matrix::Matrix(int x,int y)
{
m=x;
n=y;
data=new double* [m];
int i(0),j(0);
for(;i!=m;i++)
data[i]=new double [n];
for(i=0;i!=m;i++)
for(j=0;j!=n;j++)
data[i][j]=0;
}
//构造函数结束


//析构函数
Matrix::~Matrix()
{
for(int j=0;j!=m;j++)
delete[] data[j];

}
//析构函数结束



//输出矩阵
void Matrix::Print()
{
int i,j;
for(i=0;i!=m;i++)
{
for(j=0;j!=n;j++)
{
cout<<data[i][j]<<" ";
}
cout<<endl;
}
}
//输出矩阵结束


//输入矩阵
void Matrix::Input()
{
for(int i=0;i!=m;i++)
for(int j=0;j!=n;j++)
cin>>data[i][j];

}
//输入矩阵结束


//拷贝构造函数
Matrix::Matrix( const Matrix &src)
{  
m=src.m;  
    n=src.n;  
int i,j;  
data=new double* [m];  
for(i=0;i<m;i++)  
data[i]=new double[n];  
for(i=0;i<m;i++)
            for(j=0;j<n;j++)  
                data[i][j]=src.data[i][j];  
}  
//拷贝构造函数结束



//乘法运算符重载
Matrix Matrix::operator * (const Matrix &s1,const Matrix &s2) 
{
if(s1.n!=s2.m)
{
cout<<"两矩阵无法相乘!"<<endl;
exit(0);
}
Matrix result(s1.m,s2.n);
for(int i=0;i!=s1.m;i++)
for(int j=0;j!=s2.n;j++)
for(int k=0;k!=s1.n;k++)
result.data[i][j]+=s1.data[i][k]*s2.data[k][j];
return result;
}
//乘法运算符重载结束



int  main(int argc,  char* argv[])
{
int x(0),y(0);
cout<<"请输入矩阵1的行:";
cin>>x;
cout<<"请输入矩阵1的列:";
cin>>y;
Matrix A(x,y);
cout<<"请输入矩阵1的元素,元素个数为:"<<x<<"*"<<y<<endl;
A.Input();

cout<<"请输入矩阵2的行:";
cin>>x;
cout<<"请输入矩阵2的列:";
cin>>y;
Matrix B(x,y);
cout<<"请输入矩阵2的元素,元素个数为:"<<x<<"*"<<y<<endl;
B.Input();

Matrix C=A*B;
C.Print();


system("pause");
return 0;
}

------解决方案--------------------
乘号重载函数是一个友元函数,不是成员函数。定义的地方改一下。
------解决方案--------------------

//乘法运算符重载
Matrix Matrix::operator * (const Matrix &s1,const Matrix &s2) 
{
if(s1.n!=s2.m)
{
cout<<"两矩阵无法相乘!"<<endl;
exit(0);
}
Matrix result(s1.m,s2.n);
for(int i=0;i!=s1.m;i++)
for(int j=0;j!=s2.n;j++)
for(int k=0;k!=s1.n;k++)
result.data[i][j]+=s1.data[i][k]*s2.data[k][j];
return result;
}


记住,友元函数不是成员函数,所以在该函数的实现里是不能加Matrix:的,所以只要改为

Matrix operator * (const Matrix &s1,const Matrix &s2) 
{
if(s1.n!=s2.m)
{
cout<<"两矩阵无法相乘!"<<endl;
exit(0);
}
Matrix result(s1.m,s2.n);
for(int i=0;i!=s1.m;i++)
for(int j=0;j!=s2.n;j++)
for(int k=0;k!=s1.n;k++)
result.data[i][j]+=s1.data[i][k]*s2.data[k][j];
return result;
}

就可以了