Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 16.01.2005, 16:40 Titel: und noch ein "Problem mit Templates" |
|
|
Code: |
template<class T> cLog & operator << (const T &daten)//etwas in die Logdatei schreiben:
{
m_Datei.open(m_Dateiname.c_str(), std::ios::out | std::ios::app);
m_Datei << daten;
m_Datei.close();
}
//#ifdef _MATHEX_
cLog::operator << (const cVector &v)
{
m_Datei.open(m_Dateiname.c_str(), std::ios::out | std::ios::app);
m_Datei << v.x;
m_Datei.close();
}
//#endif
|
tja, cih mache auch eine Html logclass, und möcht meine cVectorclasse in die Datei schreiben. Weil di fstram ja nicht kennen kann, und ich die sowieso formatieren wil, will ich das Template überladen.
Code: |
D:\C++\INCLUDE\log.h(39) : error C2784: 'class cLog &__thiscall cLog::operator <<(const T &)' : Vorlagenargument fuer 'class cLog &' von 'int' konnte nicht hergeleitet werden
D:\C++\INCLUDE\log.h(39) : error C2785: 'class cLog &__thiscall cLog::operator <<(const T &)' und 'int __thiscall cLog::operator <<(const class cVector &)' haben verschiedene Rueckgabetypen
D:\C++\INCLUDE\log.h(30) : Siehe Deklaration von '<<'
|
einzelnt funktionieren beide, nur zusammen nicht. Wie kann ich das ändern, so dass es funktioniert? _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 16.01.2005, 17:04 Titel: |
|
|
Hi
CPP: | class FOO
{
public:
FOO (void) {};
~FOO (void) {};
int value;
};
class log
{
public:
// Con- und Destructor
log (void);
~log (void);
// Funktion zum setzen des Namen vom Protokoll.
void setFile (const std::string &FileName = "Protokoll.html");
// Operator zum schreiben in das Protokoll.
template<class T> log & operator << (const T& data)
{
// In Datei schreiben.
m_FileStream.open (m_FileName.c_str(), std::ios::out | std::ios::app);
m_FileStream << data;
m_FileStream.close ();
// Und sich selber zurückgeben.
return (*this);
}
// Operator zum schreiben in das Protokoll.
log & operator << (const FOO& data)
{
// In Datei schreiben.
m_FileStream.open (m_FileName.c_str(), std::ios::out | std::ios::app);
m_FileStream << data.value;
m_FileStream.close ();
// Und sich selber zurückgeben.
return (*this);
}
private:
// Daten für die Log-Datei
std::string m_FileName;
std::fstream m_FileStream;
}; |
Läuft. _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 16.01.2005, 17:23 Titel: |
|
|
Code: |
template cLog & operator << (const T& daten)//etwas in die Logdatei schreiben:
{
m_Datei.open(m_Dateiname.c_str(), std::ios::out | std::ios::app);
m_Datei << daten;
m_Datei.close();
return (*this);
}
cLog & operator << (const cVector& v)
{
m_Datei.open(m_Dateiname.c_str(), std::ios::out | std::ios::app);
m_Datei << v.x;
m_Datei.close();
return (*this);
} |
D:\C++\GDK2\log.h(30) : error C2143: Syntaxfehler : Fehlendes ',' vor '&'
D:\C++\GDK2\log.h(30) : error C2059: Syntaxfehler : '&'
D:\C++\GDK2\log.h(31) : error C2143: Syntaxfehler : Fehlendes ';' vor '{'
D:\C++\GDK2\log.h(31) : error C2803: Operator '<<' muss mindestens einen formalen Parameter vom Typ Klasse haben
D:\C++\GDK2\log.h(31) : error C2805: Binaerer Operator '<<' hat zu wenig Parameter
D:\C++\GDK2\log.h(31) : error C2059: Syntaxfehler : '{'
D:\C++\GDK2\log.h(31) : error C2334: Unerwartete(s) Token vor '{'; sichtbarer Funktionsrumpf wird übersprungen
main.cpp _________________ https://jonathank.de/games/ |
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
Verfasst am: 16.01.2005, 20:15 Titel: |
|
|
Schreib mal statt:
CPP: | template cLog & operator << (const T& daten)//etwas in die Logdatei schreiben:
{
m_Datei.open(m_Dateiname.c_str(), std::ios::out | std::ios::app);
m_Datei << daten;
m_Datei.close();
return (*this);
} |
das hier: CPP: | template<<typename T>typename T> cLog & operator << (const T& daten)//etwas in die Logdatei schreiben:
{
m_Datei.open(m_Dateiname.c_str(), std::ios::out | std::ios::app);
m_Datei << daten;
m_Datei.close();
return (*this);
} |
Wenn mein code schon net geht, machste wo anders was falsch, denn der läuft auf meinem VC++6 _________________ 'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ] |
|
Nach oben |
|
 |
Jonathan_Klein Living Legend

Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
|
Nach oben |
|
 |
Patrick Dark JLI Master

Anmeldedatum: 25.10.2004 Beiträge: 1895 Wohnort: Düren Medaillen: Keine
|
|
Nach oben |
|
 |
|