2012-05-13 73 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

相關問題