J'ai lu Should operator<< be implemented as a friend or as a member function? et Overloading Insertion Operator in C++, ressemble à un problème similaire, mais n'a pas résolu mon propre problème.classe n'a pas de membre "opérateur <<"
Mon fichier d'en-tête:
using namespace std;
class Animal {
private:
friend ostream & operator<< (ostream & o, Dog & d);
int number;
public:
Animal(int i);
int getnumber();
};
ostream & operator<< (ostream & o, Dog & d);
Mon cpp:
using namespace std;
int Animal::getnumber(){
return number;
}
ostream & Animal::operator<< (ostream & o, Dog & d){
//...
}
Animal::Animal(int i) : number(i){}
La mise en œuvre est simple, mais je reçois l'erreur: en cpp - Erreur: classe de classe "Animal" n'a aucun membre "opérateur < <". Je ne comprends pas vraiment parce que j'ai déjà déclaré l'opérateur d'insertion comme ami dans Animal, pourquoi ai-je encore cette erreur? (mettre l'ostream en public n'aide pas)
Si vous ne voulez pas faire 'l'opérateur <<' fonction ami, faites-le déléguer à une fonction de membre (éventuellement virtuel): 'ostream & operator << (ostream & o, Dog & d) {d. print_to_stream (o); } ' – sfstewman