2009-05-25 22 views

Antwort

12

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; 
} 
+0

Ich würde empfehlen, getName() hinzuzufügen und Freund-Betreiber zu entfernen. –

+0

Warum brauche ich einen Freund? –

+0

Ja, es ist ziemlich eigenartig, ein privates, accessorloses Datenelement zu haben, auf das nur durch << Tricks zugegriffen werden kann! –

3

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; 
}