ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
857
857
EMPFEHLEN
-
Hi,
ich möchte gerne einen vector an eine abstracte per Konstrucktor übergeben.
Innerhalb der Abstracten Klasse, möchte ich dann den Inhalt des Vectors ausgeben.
Allerdings stimmt damit etwas noch nicht. In der Abstracten Klasse kann ich nichtauf den Inhalt zugreifen.
Hier einmal der Code:
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
class klasse_test: public basis_klasse { private: vector<string> V; public: klasse_test()//Konstrucktor :basis_klasse(V) { V.push_back("Inhalt 0"); //0 V.push_back("Inhalt 1");//1 V.push_back("Inhalt 2");//2 }; void xxx() { } };
Code cpp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
class basis_klasse { private: vector<string> V; public: basis_klasse(vector <string> &A) :V(A){}; virtual void xxx(void)=0; void menue(void) { system("cls"); cout <<V[0]<<endl<<endl; } };
Der Aufruf in der Main erfolgt so:
Code cpp:1 2 3 4
klasse_test xxx; basis_klasse *test2; test2= &xxx; test2->menue( );
-
18.05.09 15:22 #2
- Registriert seit
- Jun 2005
- Beiträge
- 8.168
Hi.
Das Problem ist, dass natürlich zuerst der Konstruktor der Basisklasse aufgerufen wird bevor der Konstruktor der abgeleiteten Klasse ausgeführt wird. Da du einen leeren Vektor an die Basisklasse übergibst und in der Basisklasse eine Kopie des (leeren) Vektors gespeichert wird, bleibt der Vektor beim Aufruf der menue() Methode natürlich auch leer.
Du hast 2 Möglichkeiten: entweder du speicherst dir eine Referenz auf den übergebenen Vektor in der Basisklasse, oder du deklarierst den Vektor in der Basisklasse als protected und füllst diesen direkt in der abgeleiteten Klasse anstatt nochmal einen Vektor in dieser Klasse zu definieren.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
18.05.09 15:23 #3
Hi, ich denke es wird nichts ausgegeben, weil du einen leeren Container übergibst. Wenn du da was sehen willst muss deine abgeleitete Klasse ebenfalls einen Konstruktor mit einem Vektor als Parameter bereitstellen. So wie es jetzt ist, wird ein leerer Vektor von der test_klasse an die Basisklasse übergeben.
mfgVisit shadowmasta
-
Stimmt da hab ich garnicht dran gedacht, dass zuerst der Konstrucktor der Basisklasse aufgerufen wird.
@deepthroat
Ich hab deinen 2 Vorschlag mit protected einmal umgesetzt.
Sind ja nur 2 Zeilen zuändern.
Ähnliche Themen
-
Abstracte Klasse + Konstructor ...?
Von takidoso im Forum JavaAntworten: 3Letzter Beitrag: 08.06.09, 13:53 -
Klasse nur mit Konstruktor
Von mojitoweb im Forum JavaAntworten: 19Letzter Beitrag: 17.05.08, 11:02 -
Klasse Vector in Template übergeben ?
Von MFC openGL im Forum C/C++Antworten: 10Letzter Beitrag: 18.05.05, 17:56 -
Klasse / Konstruktor (VB.net)
Von Speedkill im Forum Visual Basic 6.0Antworten: 6Letzter Beitrag: 26.04.05, 10:38 -
StringBuffer an konstruktor übergeben
Von AndreG im Forum JavaAntworten: 3Letzter Beitrag: 01.03.04, 18:27





Zitieren
Login






