endl selber machen
-
Hallo,
ich habe eine Log-Klasse geschrieben, die den <<-Operator überladen hat. Also damit es genauso zu handhaben ist wie mit cout etc. Wie kann man jetzt ein eigenes endl machen?
-
Du kannst das nomale std::endl nehmen.
-
Das funktioniert nicht!
error C2784: 'class std::basic_ostream<_E,_Tr> &__cdecl std::operator <<(class std::basic_ostream<_E,_Tr> &,const class std::basic_string<_E,_Tr,_A> &)' : Vorlagenargument fuer 'class std::basic_ostream
<_E,_Tr> &' von 'class CLog_' konnte nicht hergeleitet werden
-
Hallo,
zeig doch bitte mal ein minimales Code-Beispiel, dass den Fehler demonstriert.
Mir scheint du hast da was mit dem Rückgabewert verwurschtelt.
-
gerne:
class CLog_ { private: std::ofstream outstream; CLog_(void); //Von der Klasse darf man selbst kein Objekt erstellen public: ~CLog_(void); static CLog_& instance(void); template <class T> CLog_& operator<< (const T &Type) { outstream<<Type; outstream.flush(); return *this; } };
-
Mir scheint du hast da was mit dem Rückgabewert verwurschtelt
template <class T>
CLog_& operator<< (const T &Type)Sehen se
CLog_ besitzt keinen operator<< der ein Argument vom Typ ostream& (*)(ostream&) akzeptiert.
Dein op<< muss entweder ein ostream& liefern oder du brauchst einen weiteren op<<.class Clog_ { ... CLog_& operator<< (std::ostream& (*p)(std::ostream&)) { p(outstream); return *this; } ... };