void add(sparseMatrix<T> &b, sparseMatrix<T> &c); // c is output
sparseMatrix<T> operator+(sparseMatrix<T> &b);
我正在创建一个稀疏矩阵,它由矩阵项的单链表组成的arrayList(矩阵项包含行、列和值)。我在重载 + 运算符时遇到问题。我有一个 add 方法可以正常工作,但是当我尝试使用它来重载 + 运算符时,我收到以下错误:
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;
}
main 中给出错误的行是 c = a + b (a、b、c 都是稀疏矩阵)。请注意,如果我执行 a.add(b,c) 一切正常。我还重载了 = 运算符,该运算符在我执行 a = b 等操作时起作用,但它似乎在我发布的错误消息中抱怨它。我真的不确定问题是什么。有任何想法吗?