Bei einer Klasse wie definierenWie klassenspezifische Operator << in C++
cout << myPerson << endl;
Was muss ich tun, um den Ausgangsoperator <<
für diese Klasse zu definieren?
Bei einer Klasse wie definierenWie klassenspezifische Operator << in C++
cout << myPerson << endl;
Was muss ich tun, um den Ausgangsoperator <<
für diese Klasse zu definieren?
dies in der Klasse hinzufügen:
friend std::ostream& operator<< (std::ostream& out, const Person& P);
und dann dem Bediener < < etwa wie folgt definiert werden:
std::ostream& operator<< (std::ostream& out, const Person& P) {
out << P.name;
return out;
}
Ich würde empfehlen, getName() hinzuzufügen und Freund-Betreiber zu entfernen. –
Warum brauche ich einen Freund? –
Ja, es ist ziemlich eigenartig, ein privates, accessorloses Datenelement zu haben, auf das nur durch << Tricks zugegriffen werden kann! –
eine Elementfunktion drucken definieren(), die eine Ostream als Argument annimmt. Lassen Sie dann den überladenen Operator < < diese Memberfunktion aufrufen. Auf diese Weise können Sie die Verwendung eines Freundes vermeiden. Beispiel:
void YourClass::print(ostream& out) const
{
//implement printing ...
}
ostream& operator<<(ostream& out, const YourClass& m)
{
m.print(out);
return out;
}
@aJ: Spot on! –