Wie behebe ich "zweideutig überlastung" Fehler beim überladen von operator<< (Vorlagen)?

Ich versuche, die überlastung der << Betreiber, aber ich bekomme die folgende Fehlermeldung:

Fehler: mehrdeutig overload for 'operator<<' in 'std::cout << "Test "'

..Gefolgt von 5 Milliarden anderen Fehler ähnlich:

c:\mingw\bin../lib/gcc/mingw32/4.5.2/include/c++/ostream:165:7: Hinweis:
Kandidaten sind: ...

Dieser kommt, denn ich bin mit cout in meinem main.cpp Datei.

Hier ist mein code:

In BinTree=.h:

    template <typename T>
    class BinTree{
    ...
    friend std::ostream& operator<< <>(std::ostream&, const T&);

In BinTree.cpp:

    template <typename T>
    std::ostream& operator<< (std:: ostream& o, const T& value){
        return o << value;
    }

Vielen Dank im Voraus für jede Hilfe, die Sie geben können.

Ich bin nicht völlig überzeugt, Sie haben uns genug code, um dieses problem zu lösen, aber die Informationen, die Sie gegeben, der uns führt mich zu der Frage: Warum operator<<(std::ostream&, const T&) müssen Zugang zu BinTree<T>'s-Interna wenn es nicht immer verwenden (oder BinTree<T>)?

InformationsquelleAutor Joey | 2011-10-16

Schreibe einen Kommentar