Dynamische Objekte erzeugen und in vector speichern
-
Hi!
Bei folgender Aufgabe weiß ich nicht weiter:
"Schreiben Sie eine neue Funktion vAufgabe_2(): Lesen Sie die Anzahl der zu erzeugenden PKWs und Fahrräder ein, erzeugen Sie dynamisch entsprechende Objekte der Klassen PKW und Fahrrad. Speichern Sie die Zeiger auf die erzeugten Fahrzeuge in einem vector der STL."
Nun ja, ich weiß zumindest wie ich dynamische Objekte erzeuge:
Fahrzeug* test1 = new Fahrzeug("VW Polo",180) //name, speed;
Nun soll das aber über eine Schleife geschehen, ich schätze mal die Objekte müssen automatisiert werden?
Vielleicht kann mir Jemand spontan helfen?
-
Falsches Unterforum - hier ist C++/CLI, eine .NET Sprache, die ausser ihrer guten Interoperabilität mit C++ nichts zu tun hat. Das C++ Unterforum wäre korrekt.
-
theta schrieb:
Falsches Unterforum - hier ist C++/CLI, eine .NET Sprache, die ausser ihrer guten Interoperabilität mit C++ nichts zu tun hat. Das C++ Unterforum wäre korrekt.
Hups, danke!
Kann man den Thread noch verschieben?
-
Das wird früher oder später ein Moderator machen (leider kann man das nicht selber machen).
-
Zu deinem Problem:
Es kann zerlegt werden. In a.) Einlesen zweier Zahlen (Anzahl Fahrräder und Anzahl PKW). Und b.) in die Erzeugung der Fahrräder und PKWs in entsprechender Anzahl. Dann c.) speicherst du Zeiger auf die erzeugten Fahrzeuge (welche konkret Fahrräder und PKWs sind) in einem std::vector<Fahrzeug*> ab.
Löschen (mit delete) nicht vergessen, sobald du die Fahrzeug-Objekte nicht mehr benötigst.
Zeige doch mal deinen Ansatz für a.).
-
theta schrieb:
Zu deinem Problem:
Es kann zerlegt werden. In a.) Einlesen zweier Zahlen (Anzahl Fahrräder und Anzahl PKW). Und b.) in die Erzeugung der Fahrräder und PKWs in entsprechender Anzahl. Dann c.) speicherst du Zeiger auf die erzeugten Fahrzeuge (welche konkret Fahrräder und PKWs sind) in einem std::vector<Fahrzeug*> ab.
Löschen (mit delete) nicht vergessen, sobald du die Fahrzeug-Objekte nicht mehr benötigst.
Zeige doch mal deinen Ansatz für a.).
Habe jetzt folgenden Code geschrieben, wobei vAnlegen() die Klassenmember mit Eingaben belegt:
int num_pkw = 0; int num_bike = 0; Fahrrad* Fahhrad_pointer; PKW* PKW_pointer; cout << "Zahl der PKW's: \n" << endl; cin >> num_pkw ; cout << "Zahl der Fahrraeder: \n" << endl; cin >> num_bike; vector <Fahrzeug*> FahrzeugVektor(num_pkw + num_bike); FahrzeugVektor.clear(); for (int i = 0; i < FahrzeugVektor.size(); ++i) { PKW_pointer = new PKW(); PKW_pointer->vAnlegen(); FahrzeugVektor.push_back(PKW_pointer); } for (int j = 0; j < FahrzeugVektor.size(); ++j) { Fahhrad_pointer = new Fahrrad(); Fahhrad_pointer->vAnlegen(); FahrzeugVektor.push_back(Fahhrad_pointer); }
-
Habe jetzt folgenden Code geschrieben, wobei vAnlegen() die Klassenmember mit Eingaben belegt:
Und, funktioniert es?
Tips:
- Du darfst hier auch kompilierbaren Code posten, mitmain()
und so.
- Du kannst dir (für dich) Zwischenergebnisse und Variablen ausgeben (z.B.num_pwk
oderFahrzeugVector.size()
).
- Variablen sollen erst so kurz wie möglich vor Gebrauch definiert/initialisiert werden (num_pwk
,num_bike
,Fahhrad_pointer
,PKW_pointer
).
- Das wasvAnlegen()
vermutlich aktuell erledigt, wird normalerweise im Konstruktor erledigt.Fragen:
a) Was ist der Rückgabewert vonFahrzeugVektor.size()
zwischen Zeile 10 und 11?
b) Was ist der Rückgabewert vonFahrzeugVektor.size()
zwischen Zeile 11 und 12?
c) Wieviele Durchläufe gibt es in der ersten Schleife (ab Zeile 13)?
d) Wieviele Durchläufe gibt es in der zweiten Schleife (ab Zeile 19)?
e) Könnte man denFahrzeugVektor
zuerst leer lassen, danachnum_pwk
Schleifendurchläufe machen, dabei jedes Mal einPKW
erzeugen und einfügen?
f) Könnte man e) analog fürnum_bike
mitFahrrad
machen?Gruss und viel Spass
thetaEdit: Formatierung angepasst