void add(sparseMatrix<T> &b, sparseMatrix<T> &c); // c is output
sparseMatrix<T> operator+(sparseMatrix<T> &b);
我創建其由矩陣術語的單鏈表(矩陣項包含行,列,和值)的ArrayList的稀疏矩陣。我無法重載+運算符。我有正常工作的add方法,但是當我嘗試用它來重載+運算符,我得到了以下錯誤:C++:重載+運算符的稀疏矩陣
sparseMatrix.cpp: In function ‘int main()’:
sparseMatrix.cpp:268: error: no match for ‘operator=’ in ‘c = sparseMatrix<T>::operator+(sparseMatrix<T>&) [with T = int](((sparseMatrix<int>&)(& b)))’
sparseMatrix.cpp:174: note: candidates are: sparseMatrix<T>& sparseMatrix<T>::operator=(sparseMatrix<T>&) [with T = int]
make: *** [sparseMatrix] Error 1
這裏是我的重載+運算符實現:
sparseMatrix<T> sparseMatrix<T>::operator+(sparseMatrix<T> &b)
{
sparseMatrix<T> c;
add(b, c);
return c;
}
給出錯誤的主線是c = a + b(a,b,c都是稀疏矩陣)。請注意,如果我做a.add(b,c),一切正常。當我做a = b等時,我也重載了=運算符,但似乎是在我發佈的錯誤消息中抱怨它。我真的不確定問題是什麼。有任何想法嗎?
嗯,從快速掃描您的問題,確認+運算符的輸出。它是否會返回它應該的? – 2010-10-02 13:11:47
當我嘗試使用+運算符時,我甚至無法編譯它,所以我無法檢查輸出 – murkilator 2010-10-02 13:14:09
您可能對'boost :: ublas :: sparse_matrix'感興趣:http://www.boost。 org/doc/libs/1_44_0/libs/numeric/ublas/doc/matrix_sparse.htm – 2010-10-02 13:19:55