Je suis un débutant en C++ et j'ai le problème suivant. Lorsque j'exécute le code suivant dans VS2013, j'obtiens une erreur.C++ operator << surcharge
class Y{
public:
Y(int un_x, int un_y)
: x_(un_x), y_(un_y) {}
int x() const {
return x_;
}
int y() const {
return y_;
}
private:
int x_;
int y_;
};
class X{
private:
Y coord;
public:
// some code ...
Y position() const {
return coord;
}
void display(ostream& output) const {
output << "The object is in position " << position();
}
};
ostream& operator<<(ostream& output, Y x){
output<< "(" << x.x() << ", " << x.y() << ")" << endl;
return output;
}
Si je crée un some_object objet de classe X et essayer de le faire:
cout << some_object ;
Je reçois l'erreur followng:
error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'const Y' (or there is no acceptable conversion)
Vous ne pouvez pas exécuter ce code car il n'y a pas de code à exécuter (comme une fonction principale). Si vous voulez dire ce dont vous avez parlé ci-dessous le code, il n'y a pas de surcharge pour sortir un 'X'. – chris
Le code lié ci-dessus par MooingDuck se compile et s'exécute correctement sous VS2013. S'il vous plaît poster un [SSCCE] (http://sscce.org) qui reproduit le problème. – Praetorian
En outre, qu'est-ce que 'X' a à voir avec cette question? –