<<-Operator für Template definieren
-
Hi Forum,
falls ich irgendwelche Konventionen missachten sollte, weist mich darauf hin, ich bin 'n Newbie hier...
Also hier mein Problem:
ich versuche für ein Template den Ausgabeoperator zu definieren (nicht schön, aber selten):
Datei: baum.hpp (Auszug) ...[snip] template<class T> class AVLBaum : public AVLKnoten<T> { private: AVLKnoten<T>* wurzel; AVLKnoten<T>* pointer; public: T* find (T*); void put (T*); AVLBaum(); AVLBaum(T); AVLBaum(T*); ~AVLBaum(); bool hatInhalt(); void clear(); }; template<class T> std::ostream& operator<<(std::ostream&, AVLBaum<T>); [snip] ....
class AVLKnoten wird woanders definiert, alles klappt prima, bis auf den Moment, wenn ich den <<-Operator als nicht-Elementfunktion versuche zu definieren.
Wenn ich nun eine Instanz vom AVLBaum erzeugen will, erklärt der Compiler (gcc), daß er keine Referenz für das Template finden kann... Sobald ich die Operatordefinition entferne ist alles koscher.
Meine Fragen dazu sind:
1. so ganz hab' ich den Unterschied zwischen der Definition des Operators als Elementfunktion und der Definition als Nicht-Elementfunktion offensichtlich noch nicht verstanden...
und 2.: verd%&/, warum killt mir die (formal wohl richtige) Operator-Definition gleich die gesamte class AVLBaum?
Mit *kratzamKopf* bedankt sich im Voraus:
Tidy Tim