JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

und noch ein "Problem mit Templates"

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 16.01.2005, 16:40    Titel: und noch ein "Problem mit Templates" Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



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

BeitragVerfasst am: 16.01.2005, 17:04    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 16.01.2005, 17:23    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



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

BeitragVerfasst am: 16.01.2005, 20:15    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 16.01.2005, 20:45    Titel: Antworten mit Zitat

Jeah! Geht! Cool!
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



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

BeitragVerfasst am: 16.01.2005, 20:51    Titel: Antworten mit Zitat

Für weitere Tipps und Tricks mit Templates und co.:
http://83.246.114.104/patrick/schnippel.php
_________________
'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
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum