000
30.06.2005, 15:28 Uhr
~Sliddi
Gast
|
Hallo Leute !!
Ich versuch mich grad ein bisschen an der Vererbung und hänge bei folgendem Problem:
Ich habe 1 Klasse TestClassA und 2 Klassen die davon erben TestClassB und TestClassC.
Für die verbesserte Ausgabe habe ich jeweils STDOUT überschrieben
In TestClassA hab ich 2 Variablen und in den Unterklassen jeweils eine weitere Variable damit die Vererbung auch halbwegs sinnvoll ist:
C++: |
#include <iostream>
TestClassA::TestClassA(int alter_in, int gewicht_in) { alter=alter_in; gewicht=gewicht_in; }
std::ostream & operator << ( std::ostream & stream , TestClassA const & data ) { return stream <<data.alter<<" "<<data.gewicht; }
|
Die vererbte Klasse sieht so ähnlich aus:
C++: |
#include <iostream>
TestClassB::TestClassB(int alter, int gewicht, int groesse_in) : TestClassA(alter,gewicht) { groesse = groesse_in; }
std::ostream & operator << ( std::ostream & stream , TestClassB const & data ) { return stream <<data.alter<<" "<<data.gewicht<<" "<<data.groesse; }
|
Wenn ich Objekte dieser Klassen jetzt in einen Vektor stecke:
C++: |
Testi.push_back(TestClassA(25,70)); Testi.push_back(TestClassB(40,80,180)); Testi.push_back(TestClassB(12,40,140));
|
und danach versuche mit den überschriebenen STDOUT's die Daten wieder rauszulesen wird immer nur die überschriebene Varainte der Superklasse verwendet - ich bekomme also konkret nie die Größe heraus
C++: |
cout << Testi[0]; --> 25 70 cout << Testi[1]; --> 40 80 cout << Testi[2]; --> 12 40
|
Ich hätte aber gerne dass jede Klasse den eigenen, überschriebenen STDOUT verwendet |