Operatoren überladen, aber wo?
-
Hallo,
ich habe mir noch nie wirklich Gedanken darüber gemacht, aber momentan habe ich einige Probleme mit den Operatoren (oder vielmehr damit, wo ich sie definieren sollte...). Wenn ich z.B. eine Klasse habe wie
namespace foo { class bar { // Zeugs... }; }wo überlade ich dann Operatoren wie etwa
std::wostream &operator<<(std::wostream &, const foo::bar &)am besten? Ebenfalls im namespace foo, oder im global namespace? Ich frage, weil ich in meinem aktuellen Projekt, welches bereits ziemlich viele überladene Operatoren aufweist, ein durcheinander habe. Und nun habe ich einen weiteren Operator definiert, und es kompiliert irgendwie nicht mehr und bevor ich das restrukturiere, muss ich doch wissen, wie die gängige Art aussieht
MfG
-
im namespace der klasse wegen argument dependent lookup.
-
Shade Of Mine schrieb:
im namespace der klasse wegen argument dependent lookup.
Gut. Dann reorganisiere ich das Projekt jetzt mal. Dependent lookup scheint auch DAS Stichwort für meine 271 Fehlermeldungen zu sein.
Danke

-
Shade Of Mine schrieb:
im namespace der klasse wegen argument dependent lookup.
Wirklich??
Ich würde diesen Operator außerhalb jedes Namespaces definieren. Wegen des zweiten Parameters (foo::bar &) kann es doch keine Verwechselungen mit anderen Operatoren geben. Wozu also im Namespace der Klasse definieren?
Und wäre das wirklich ein Fall von/für argument dependent lookup?
Stefan.