2012-05-13 66 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; 
} 

誰かがどこディ教えてもらえますdが間違っている?

答えて

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

関連する問題