Gast
2007-10-06, 04:21:32
Wie legt man dynamisch ein Array von Objekten an,
wenn die Anzahl der letzten endes benötigten Objekte noch gar nicht bekannt ist?
Bsp. ich habe eine Klasse Namens "Person".
Diese Klasse enthält den Vornamen und Nachnamen der Person als Werte.
Und jetzt will ich in meiner main Methode Objekte der Klasse vom Typ Person initalisieren.
Aber wieviele Objekte der Klasse Person erstellt werden sollen, wird erst zur Laufzeit des Programms bekannt und das nicht auf einmal, sondernn nur Häppchenweise.
So etwas:
int anzah = 0;
cout << "Wieviele personen sind es? << endl;
cin >> anzahl;
Person *objekte = new Person[anzahl];
...
Sollte es also nicht sein, da die Anzahl ja nicht auf einen Schlag bekannt ist.
Es sollte eher etwas in der Art sein:
// Pseudocode:
int anzahl = 0;
string vorname, nachname;
char input;
bool fertig = false;
Person *objekte;
while (fertig == false)
{
anzahl++;
cout << endl << anzahl << ". Person" << endl;
cout << "---------------------------" << endl;
cout << "Vorname: ";
cin >> vorname;
cout << endl << "Nachname: ";
cin >> nachname;
// Pseudocode:
Füge ein neues Objekt dem Array *objekte vom Typ Person hinzu und initalisiere mit (Vorname, nachname);
cout << "Noch eine Person (j/n)?";
if ((cin >> input) = 'n')
{
fertig = true;
}
}
Hier wird laut Pseudocode ein Objekt dem Array nach und nach hinzugefügt,
solange der Benutzer auf die Frage "noch eine Person" mit ja beantwortet.
Wieviele Objekte insgesamt also erzeugt werden sollen, ist die ganze Zeit über noch offen.
Und so etwas würde ich gerne realisiert haben, wie mache ich das?
wenn die Anzahl der letzten endes benötigten Objekte noch gar nicht bekannt ist?
Bsp. ich habe eine Klasse Namens "Person".
Diese Klasse enthält den Vornamen und Nachnamen der Person als Werte.
Und jetzt will ich in meiner main Methode Objekte der Klasse vom Typ Person initalisieren.
Aber wieviele Objekte der Klasse Person erstellt werden sollen, wird erst zur Laufzeit des Programms bekannt und das nicht auf einmal, sondernn nur Häppchenweise.
So etwas:
int anzah = 0;
cout << "Wieviele personen sind es? << endl;
cin >> anzahl;
Person *objekte = new Person[anzahl];
...
Sollte es also nicht sein, da die Anzahl ja nicht auf einen Schlag bekannt ist.
Es sollte eher etwas in der Art sein:
// Pseudocode:
int anzahl = 0;
string vorname, nachname;
char input;
bool fertig = false;
Person *objekte;
while (fertig == false)
{
anzahl++;
cout << endl << anzahl << ". Person" << endl;
cout << "---------------------------" << endl;
cout << "Vorname: ";
cin >> vorname;
cout << endl << "Nachname: ";
cin >> nachname;
// Pseudocode:
Füge ein neues Objekt dem Array *objekte vom Typ Person hinzu und initalisiere mit (Vorname, nachname);
cout << "Noch eine Person (j/n)?";
if ((cin >> input) = 'n')
{
fertig = true;
}
}
Hier wird laut Pseudocode ein Objekt dem Array nach und nach hinzugefügt,
solange der Benutzer auf die Frage "noch eine Person" mit ja beantwortet.
Wieviele Objekte insgesamt also erzeugt werden sollen, ist die ganze Zeit über noch offen.
Und so etwas würde ich gerne realisiert haben, wie mache ich das?