J'ai été coincé sur ce code pendant un moment et je ne peux pas l'obtenir pour compiler, qu'est-ce que je fais vraiment mal? S'il y a des bugs présents quand il compile, veuillez les ignorer comme je peux résoudre ce problème. À l'heure actuelle, j'essaie juste de le faire courir. Merci d'avance. Les erreurs de l'IDE I UTILISE sont les suivantes: P> Main.cpp: 8: 51: Erreur: Aucun modèle nommé 'matrix'
STD :: Ostream & Operateur << (STD :: Ostream & OS, const matrix & matrix); P>
Main.CPP: 15: 24: ERREUR: Aucun modèle de fonction correspond à la spécialisation de la fonction Modèle de fonctionnement 'Opérateur << "ami STD :: Ostream & Opérateur << <> (STD :: Ostream & OS, const matrice & matrix); P>
Main.cpp: 35: 32: Remarque: dans l'instanciation de la classe de modèle 'Matrix' demandée ici Tapis matricielle; P>
blockQuote> p>
3 Réponses :
Si vous déconnectez la ligne 4, puis modifiez-le comme suit, le code que vous avez compile:
In function 'std::ostream& operator<<(std::ostream&, const Matrix<T, NROWS, NCOLS>&)': 31:1: warning: no return statement in function returning non-void [-Wreturn-type]
#include <cstddef>
#include <iostream>
template<typename, std::size_t, std::size_t> class Matrix;
template<typename T, std::size_t NROWS, std::size_t NCOLS>
std::ostream& operator<<(std::ostream &os, Matrix<T, NROWS, NCOLS> const &matrix)
{
for (std::size_t row{}; row < NROWS; ++row, os.put('\n'))
for (std::size_t col{}; col < NCOLS; ++col)
os << matrix.container[row][col] << ' ';
return os.put('\n');
}
template<typename T, std::size_t NROWS = 1, std::size_t NCOLS = 1>
class Matrix {
T container[NROWS][NCOLS] = {};
friend std::ostream& operator<< <>(std::ostream&, Matrix<T, NROWS, NCOLS> const&);
};
int main()
{
Matrix<float, 10, 5> mat;
std::cout << mat;
}
Please get rid of the C header <string.h>.
Vous devez définir matricielle avant que ce soit d'utilisation: et ajoutez une déclaration de retour à l'opérateur <<, qui renvoie le système d'exploitation. Vous n'avez pas non plus besoin de duplication de l'opérateur << Déclaration, vous ne pouvez le déclarer que dans un organisme de classe. P> p>
FWIW, il n'existe pas d'une classe modélisée ou d'une fonction template. Il existe cependant des modèles de classes et des modèles de fonctions.
Votre code comprend quelque chose étiqueté «mode de fixation possible» - pourquoi seulement possible? Quel est le problème avec votre propre réponse? (Continuez à suivre les messages d'erreur. Vous êtes proche.)