void add(sparseMatrix<T> &b, sparseMatrix<T> &c); // c is output
sparseMatrix<T> operator+(sparseMatrix<T> &b);
Я создаю разреженную матрицу, которая состоит из ArrayList из однократно связанных списков матричных терминов (матричные члены содержат строку, столбец и значение). У меня проблемы с перегрузкой оператора +. У меня есть метод добавления, который работает отлично, но когда я пытаюсь использовать его перегрузить оператор + я получаю следующие ошибки: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 и т. Д., Но, похоже, он жалуется на это в сообщении об ошибке, которое я опубликовал. Я действительно не уверен, в чем проблема. Есть идеи?
hmm, от QUICKLY сканируя ваш вопрос, подтвердите вывод оператора +. Он возвращает то, что нужно? –
Я даже не могу его скомпилировать, когда пытаюсь использовать оператор +, поэтому я не могу проверить вывод – murkilator
Возможно, вас заинтересует 'boost :: ublas :: sparse_matrix': http: //www.boost. org/doc/libs/1_44_0/libs/numeric/ublas/doc/matrix_sparse.htm –