Es tut mir leid, wenn diese Frage bereits beantwortet wurde, aber ich habe eine Menge Fragen gelesen, die diesen Operator in einer Template-Klasse überladen, aber ich habe keinen bestimmten Fall gefunden .Überladen des Operators << in einer Template-Klasse
Dies ist mein Code:
#include <iostream>
using std::cout;
using std::endl;
using std::ostream;
template <typename T>
class Class
{
T x;
public:
friend ostream& operator << (const Class<T>&, ostream& out);
};
template <typename T>
ostream& operator << (const Class<T>&, ostream& out)
{
return (out << out.x << endl);
}
int main()
{
Class<short> object;
cout << object << endl;
}
Und ich bekomme diesen Fehler auf der letzten Zeile: Fehler 1 Fehler C2679: binary ‚< <‘: gefunden kein Betreiber, die einen rechten Operanden vom Typ nimmt ' Class' (oder gibt es keine akzeptable Umwandlung) g: \ ucenje \ objektno orijentirano programiranje \ Template3 \ Template3 \ main.cpp 25 1 Template3
Mögliche Duplikat [Freund Erklärung deklariert eine Nicht-Template-Funktion] (http://stackoverflow.com/questions/4039817/friend-declaration-declares-a-non-template-function) –