2016-06-14 157 views
-1

我想通過傳遞給將會乘法的類來乘兩個矩陣。我面臨的問題,同時定義構造函數,請幫助我這個..(errror如下圖所示)什麼是定義類構造函數的正確方法?

我的頭文件是MatMul.h爲:

#include<iostream> 
#include<iostream> 

using namespace std; 

class MatMul 
{ 
    double **C; 
    int row,col,common; 
public: 

    MatMul(int p,int q,int r) 
    { 
     row=p; col=q,common=r; 
     C=new double *[row]; 
     for(int i=0;i<row;i++) 
      C[row]=new double [col]; 
    } 

    void multiply(double A[][3],double B[][3],int p,int q,int r) 
    { 
     for (int i=0;i<row;i++) 
     { 
      for (int j=0;j<col;j++) 
      { 
       C[i][j]=0; 
       for(int k=0;k<r;k++) 
       { 
        C[i][j]=C[i][j]+A[i][k]*B[k][j]; 
       } 
      } 
     } 
    } 
}; 

和maincpp文件

#include<iostream> 
#include<iostream> 
using namespace std; 
#include"MatMul.h" 

int main() 
{ 
    int p=3,q=3,r=3; 
    double A[p][r]={{1,0,0},{0,1,0},{0,0,1}}; 
    double B[r][q]={{1,0,0},{0,1,0},{0,0,1}}; 
    MatMul c(p,q,r); 
    c.multiply(A,B,p,q,r); 

    return 0; 
} 

是表示

error: no matching function for call to ‘MatMul::multiply(double [p][r], double [r][q], int&, int&, int&)’ 

請你能找出錯誤並進行更新。

+0

如果'q'和'r'不是常數,'double A [p] [r]'是非標準的。嘗試使用'const int p = 3,q = 3' – Ajay

+0

'double A [p] [r] = {{1,0,0},{0,1,0},{0,0 ,1}}'。 init值是固定的(3x3),'p','r'是「變量」。簡單地說'雙A [3] [3]'。 – i486

回答

0

靜態數組大小不能來自非const變量。

這將編譯罰款(由pqrconst):

const int p=3,q=3,r=3; 
double A[p][r]={{1,0,0},{0,1,0},{0,0,1}}; 
double B[r][q]={{1,0,0},{0,1,0},{0,0,1}}; 

此外,沒有必要列入<iostream>兩次(一次也沒有,你闖到大使用它)。 using namespace std;在你的代碼中也沒用。

相關問題