2016-10-01 4 views
-1

Angenommen, ich habe eine Klasse Crate, und es hat zwei Mitglieder, width und height. Nehmen wir nun an möchte ich die Linie std::cout << myCrate << '\n'; dies drucken:Kann eine benutzerdefinierte Klasse benutzerdefiniertes Verhalten mit Std :: Cout <<?

#---# 
| | 
| | 
#---# 

wenn myCratewidth = 5 und height = 4 hat. Unterschiedliche width s und height s sollten zu unterschiedlichen Kastengrößen führen. Kann ich dieses Verhalten definieren, z.B. durch Überlastung der << Betreiber? Wie würde ich das machen?

Beachten Sie, dass dies ein generisches Beispiel ist und nicht spezifisch für die obige Klasse Crate.

+1

durch die '' << Betreiber zu überlasten. – LogicStuff

+0

Ich hätte gerne genauere Anweisungen. – Johan

+1

Sie finden genauere Anweisungen in dem Buch, in dem Sie C++ lernen. stackoverflow.com ist kein Code-Schreibdienst. –

Antwort

2

Ja, Sie können es tun, indem Sie operator<< wie unten gezeigt überladen. Indem die Funktion als friend von Crate deklariert wird, hat sie Zugriff auf alle privaten Datenmitglieder, so dass Sie die Daten so darstellen können, wie Sie es für richtig halten.

Crate.hpp

class Crate { 
    ... 
    friend std::ostream& operator<< (std::ostream& os, const Crate& c); 
    ... 
} 

Crate.cpp

std::ostream& operator<< (std::ostream& os, const Crate& c) { 
    os << "whatever you want to print" 

    return os; 
} 
Verwandte Themen