void add(sparseMatrix<T> &b, sparseMatrix<T> &c); // c is output
sparseMatrix<T> operator+(sparseMatrix<T> &b);
Je crée une matrice creuse qui est constituée d'une liste de tableaux de listes simplement liés des termes de la matrice (les termes de la matrice contiennent la ligne, la colonne et la valeur). J'ai du mal à surcharger l'opérateur +. J'ai une méthode d'ajout qui fonctionne très bien, mais lorsque je tente de l'utiliser pour surcharger l'opérateur + je reçois les erreurs suivantes:C++: surcharge + opérateur pour une matrice creuse
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
Voici ma mise en œuvre pour la surcharge opérateur +:
sparseMatrix<T> sparseMatrix<T>::operator+(sparseMatrix<T> &b)
{
sparseMatrix<T> c;
add(b, c);
return c;
}
La ligne dans main qui donne l'erreur est c = a + b (a, b, c sont toutes des matrices creuses). Notez que si je fais a.add (b, c) tout fonctionne bien. J'ai aussi surchargé l'opérateur = qui fonctionne quand je fais a = b etc. mais il semble s'en plaindre dans le message d'erreur que j'ai posté. Je ne sais vraiment pas quel est le problème. Des idées?
hmm, de numériser RAPIDEMENT votre question, confirmez la sortie de l'opérateur +. Est-ce qu'il rend ce qu'il devrait? –
Je ne peux même pas le compiler quand j'essaie d'utiliser l'opérateur + donc je ne peux pas vérifier la sortie – murkilator
Vous pourriez être intéressé par 'boost :: ublas :: sparse_matrix': http: //www.boost. org/doc/libs/1_44_0/libs/numérique/ublas/doc/matrix_sparse.htm –