求大神看看operator*错在哪里了

#include
using namespace std;
class Matrix{
private:
int N;
int **matrix;
public:
Matrix();
~Matrix();
Matrix(int);
void init();
void unit();
void display();
Matrix& operator+(Matrix&);
Matrix& operator*(Matrix &);
Matrix& Mul(Matrix&,int);//矩阵和幂
};
Matrix::Matrix(){N=0;}
Matrix::~Matrix(){
int i;
for(i=0;i delete[] matrix[i];
delete [] matrix;
}
Matrix::Matrix(int n){N=n;
matrix=new int*[N];
int i;
for(i=0;i matrix[i]=new int[N];
int j;
for(i=0;i for(j=0;j matrix[i][j]=0;
}
void Matrix::unit(){
int i,j;
for(i=0;i for(j=0;j if(i==j)
matrix[i][j]=1;
}
void Matrix::init(){
int row,col;
for(row=0;row for(col=0;col cout cin>>matrix[row][col];
}
}
Matrix& Matrix::operator*(Matrix &x){
int row,col;
int sum;
Matrix m(N);
for(row=0;row for(col=0;col int i;
sum=0;
for(i=0;i sum=(sum+matrix[row][i]*x.matrix[i][col])%256;
m.matrix[row][col]=sum;
}
x=m;//出错''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
return x;
}
Matrix& Matrix::Mul(Matrix&x,int n){
int bri[1000];
int count=0;
while(n!=0){
bri[count]=n%2;
n=n/2;
count++;
}
Matrix m(N);
m.unit();
for(int i=count-1;i>-1;i--){
m=m*m;
if(bri[i]==1)
m=m*x;
}

      x=m;
      return x;
  }
void Matrix::display(){
    int i,j;
    for(i=0;i<N;i++){
        for(j=0;j<N;j++){
            cout<<"  "<<matrix[i][j];
        }
        cout<<endl;
    }
}
Matrix& Matrix::operator +(Matrix&x){
    int i,j;
    Matrix m(N);
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            m.matrix[i][j]=matrix[i][j]+x.matrix[i][j];
        x=m;
        return x;
}
int main(){
    int n;
    cout<<"输入矩阵阶数"<<endl;
    cin>>n;
    Matrix N(n);
    N.init();       
    cout<<"输入幂"<<endl;
    cin>>n;
    Matrix K(n);
    K=N.Mul(N,n);
    cout<<"所求矩阵为:"<<endl;
    K.display();
    return 0;
}

http://codepad.org/Y0qwSnsy
没错,可以编译