2012-05-13 111 views
1

我是想学习一些运算符重载基于C++的方法,然后我有这样的错误:错误C2228:左“.values'必须有类/结构/联合

错误7错误C2228:左” .values “必须有类/结构/联合

另外还有一点说,另一个错误:

错误4错误C2065:‘和’:未声明的标识符

Matrix<type> Matrix<type>::operator+(const Matrix& m){ 

    if(num_of_rows != m.num_of_rows || num_of_cols != m.num_of_cols) // Checking if they don't have the same size. 

    Matrix<type> *sum; 
    sum = new Matrix<type>(num_of_rows, num_of_cols); 

    for(int i = 0; i < num_of_rows; i++) 
     for(int j = 0; j < num_of_cols; j++) 
      sum.values[i][j] = values[i][j] + m.values[i][j]; 

    return *sum; 
} 

有人能告诉我在哪儿迪错误?

回答

2

在您发布的代码中,sum是一个指针。因此,访问对象的成员,你需要使用->

sum->values[i][j] = ... 

也似乎宣告Matrix<type> *sum;后失踪分号,但目前还不清楚这是否是抄写错误,还是你的代码真的看起来像那样。

最后,你的内存管理泄漏了一个对象。您分配一个对象new,但返回该对象的副本,并且从不释放它。也许你想要这样的东西:

Matrix<type> sum(num_of_rows, num_of_cols); 

for (...) 
    sum.values[i][j] = .. 

return sum; 
+0

谢谢,我应该知道这一点。 是的,我的代码的某些部分以某种方式在发布时被删除,在if区块中也应该有一个抛出。 – burakongun

相关问题