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 

istream Operator überladen

 
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: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 22.05.2008, 20:25    Titel: istream Operator überladen Antworten mit Zitat

Hi,
ich habe eine simple Vektorklasse, mit überladenen Operatoren:
CPP:
template<typename t> std::ostream& operator<<(std::ostream &Stream, const Vector3<t> &Vector)
{
   return Stream << Vector.x << " " << Vector.y << " " << Vector.z;
}


template<typename t> std::istream& operator>>(std::istream &Stream, const Vector3<t> &Vector)
{
   return Stream >> Vector.x >> Vector.y >> Vector.z;
}




Der ostream Operator funktioniert wunderbar, z.B. mit cout. Auch ticpp benutzt den um einen Vector als XML Attribute zu schreiben, was ich sehr cool finde.
Also wollte ich daher den istream Operator erstellen, damit ich damit auch XML Attribute einfach laden kann.

Das sähe dann so aus:
CPP:
Object->GetAttribute("Position", &m_Position);


Folgende Fehlermeldung kommt:
Code:

Vector3d.h 132 error: no match for 'operator>>' in 'Stream >> Vector->Vector3<float>::x'


Keine Ahnung was das soll, ein Operator für floats muss es ja auf jeden Fall geben. Wieso geht das alles net?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 22.05.2008, 20:37    Titel: Antworten mit Zitat

So z.B.:

CPP:
template<typename t> std::istream& operator>>(std::istream &Stream, Vector3<t> &Vector)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 22.05.2008, 20:42    Titel: Antworten mit Zitat

also ohne const? Jop, hätte ich eigentlich sehen müssen Very Happy
Jetzt scheint es zu gehen.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
David
Super JLI'ler


Alter: 39
Anmeldedatum: 13.10.2005
Beiträge: 315

Medaillen: Keine

BeitragVerfasst am: 22.05.2008, 20:42    Titel: Antworten mit Zitat

Logisch ohne const. Wie willst du sonst auf die Member x, y und z schreiben zugreifen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 36
Anmeldedatum: 17.02.2003
Beiträge: 3431
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 22.05.2008, 21:08    Titel: Antworten mit Zitat

Ja, klar ist es logisch, es war halt ein typischer Fall von, "kann man 100 mal lesen und sieht den Fehler immer noch nicht".
Zumal die Fehlermeldung auch ein wenig komisch war.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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