DanDanger
25-04-2003, 18:50
Hallo,
ich habe in meiner Klasse <TestKlasse> eine Funktion implementiert, die die Werte einiger Privaten Elemente der Klasse ausgibt :
class TestKlasse
{
public :
void Print() ; /* Daten ausgeben */
.........
private :
.......
} ;
Um die Werte bequemer ausgeben zu können, wollt ich den << Operator von ostream überladen, damit solche Aufrufe möglich werden :
TestKlasse Test ;
/* Werte der TestKlasse <Test> ausgeben */
cout << Test << endl ;
Nun habe ich mit :
ostream &operator <<(ostream &out, TestKlasse &Test)
{
/* Print(), um auch auf die Privaten Elemente von "Fahrzeug" zuzugreifen */
Test.Print(out) ;
return out ;
}
den << Operator Überladen. Die Print Funktion sieht so aus :
ostream TestKlasse::Print(ostream &osStream)
{
/* Private Klassen-Daten werden hier in den osStream geschrieben */
osStream << Private_Daten_Der_Klasse ;
}
Das ganze Kompiliert auch wunderbar, leider stürzt das Progamm nach aufrufen von
cout << Test << endl ; (Test ist ein Objekt vom Typ TestKlasse )
mit einem Speicherzugriffsfehler ab.
Wohlgemerkt : Die Daten werden Korrekt ausgegeben, und dann stürzt das Proggi erst ab (Fehler im restlichen Code halte ich für "unmöglich", ohne überladenen Operator läuft alles).
Meine Frage : Was mache ich hier falsch ???
PS: Wenn ich das Zeug unter Visual-C++ (Ver. 6.0) von MS Compiliere, läuft alles PERFEKT, nur mit anderen Compilern (g++, MinGW, etc.) nicht. Woran kann das liegen ???
PPS: Ich weiss, ich hätte die operator-Funktion auch als "friend" in meiner Klasse definieren können, aber ich möchte "friend"-Funktion soweit wie möglich vermeiden.
Neugierige (und mittlerweile Verzweifelte) Grüsse
DanDanger
ich habe in meiner Klasse <TestKlasse> eine Funktion implementiert, die die Werte einiger Privaten Elemente der Klasse ausgibt :
class TestKlasse
{
public :
void Print() ; /* Daten ausgeben */
.........
private :
.......
} ;
Um die Werte bequemer ausgeben zu können, wollt ich den << Operator von ostream überladen, damit solche Aufrufe möglich werden :
TestKlasse Test ;
/* Werte der TestKlasse <Test> ausgeben */
cout << Test << endl ;
Nun habe ich mit :
ostream &operator <<(ostream &out, TestKlasse &Test)
{
/* Print(), um auch auf die Privaten Elemente von "Fahrzeug" zuzugreifen */
Test.Print(out) ;
return out ;
}
den << Operator Überladen. Die Print Funktion sieht so aus :
ostream TestKlasse::Print(ostream &osStream)
{
/* Private Klassen-Daten werden hier in den osStream geschrieben */
osStream << Private_Daten_Der_Klasse ;
}
Das ganze Kompiliert auch wunderbar, leider stürzt das Progamm nach aufrufen von
cout << Test << endl ; (Test ist ein Objekt vom Typ TestKlasse )
mit einem Speicherzugriffsfehler ab.
Wohlgemerkt : Die Daten werden Korrekt ausgegeben, und dann stürzt das Proggi erst ab (Fehler im restlichen Code halte ich für "unmöglich", ohne überladenen Operator läuft alles).
Meine Frage : Was mache ich hier falsch ???
PS: Wenn ich das Zeug unter Visual-C++ (Ver. 6.0) von MS Compiliere, läuft alles PERFEKT, nur mit anderen Compilern (g++, MinGW, etc.) nicht. Woran kann das liegen ???
PPS: Ich weiss, ich hätte die operator-Funktion auch als "friend" in meiner Klasse definieren können, aber ich möchte "friend"-Funktion soweit wie möglich vermeiden.
Neugierige (und mittlerweile Verzweifelte) Grüsse
DanDanger