Hallo Leute,
ich habe ein kleines Problem:
Ich möchte ein Array von Objekten erzeugen, aber dabei keine feste Anzahl des Arrays vorgeben, denn:
Im Moment habe ich folgendes:
Telefonat ist eine eigene Klasse die ich erstellt habe.
Das erstellt ja einen Array der Größe "10" vom Typ Telefonat, es werden also 10 Telefonat-Objekte erstellt, wobei aber alle Attribute noch mit "0" vorbelegt sind.
Jetzt fülle ich während des Programms diese Attribute mit unterschiedlichen Werten, aber nicht von allen Objekten, also z.B. nur 4 von 10 werden mit anderen Werten belegt.
Im Hauptprogramm möchte ich folgenden Code anwenden:
Eigentlich habe ich jetzt damit gerechnet, dass ich eine Ausgabe a la
erhalte.. zumindest ist das mein Ziel..
Leider erhalte ich, logischerweise, weil ja auch 10 Objekte vorhanden sind, folgende Ausgabe:
Jetzt meine Frage:
Wie schaffe ich es, dass tatsächlich nur 4 Objekte erstellt werden und nicht 10 wie angegeben?
Das Problem hierbei ist:
Wenn ich folgendes schreibe und sonst nichts am Code änder
kriege ich diese Fehlermeldung:
"Ok.", dachte ich mir, "änder ich doch einfach mal in i < 5 zu Testzwecken.".
Also steht jetzt folgendes da:
und jetzt kriege ich folgende Fehlermeldung:
Die Fehlermeldung wird nach dem Einlesen der Attribute ausgeworfen, sprich: Zum Zeitpunkt der Objekterstellung. Aber warum??
Hiermit wird das Objekt erstellt:
Im ersten Fall wäre i=0.
Das spuckt Visual Studio aus:
s. Anhang
Hoffe ihr könnt mir helfen...
ich habe ein kleines Problem:
Ich möchte ein Array von Objekten erzeugen, aber dabei keine feste Anzahl des Arrays vorgeben, denn:
Im Moment habe ich folgendes:
Code:
Telefonat gespraech[10]; // Array der Telefonate
Das erstellt ja einen Array der Größe "10" vom Typ Telefonat, es werden also 10 Telefonat-Objekte erstellt, wobei aber alle Attribute noch mit "0" vorbelegt sind.
Jetzt fülle ich während des Programms diese Attribute mit unterschiedlichen Werten, aber nicht von allen Objekten, also z.B. nur 4 von 10 werden mit anderen Werten belegt.
Im Hauptprogramm möchte ich folgenden Code anwenden:
Code:
for (int i = 0; i < (sizeof(telefonA.gespraech)/sizeof(telefonA.gespraech[0])); i++){
cout << i+1 << ") " << telefonA.gespraech[i].getVorwahl() << "-" << telefonA.gespraech[i].getRufnummer() << " " << telefonA.gespraech[i].getGesamtkosten() << " Cent\n" << endl;
gesamtkosten += (double) telefonA.gespraech[i].getGesamtkosten();
}
Eigentlich habe ich jetzt damit gerechnet, dass ich eine Ausgabe a la
Code:
1) 01234-56789 200 Cent
2) 01234-56789 200 Cent
3) 01234-56789 200 Cent
4) 01234-56789 200 Cent
Leider erhalte ich, logischerweise, weil ja auch 10 Objekte vorhanden sind, folgende Ausgabe:
Code:
1) 01234-56789 200 Cent
2) 01234-56789 200 Cent
3) 01234-56789 200 Cent
4) 01234-56789 200 Cent
5) 0-0 0 Cent
6) 0-0 0 Cent
7) 0-0 0 Cent
8) 0-0 0 Cent
9) 0-0 0 Cent
10) 0-0 0 Cent
Jetzt meine Frage:
Wie schaffe ich es, dass tatsächlich nur 4 Objekte erstellt werden und nicht 10 wie angegeben?
Das Problem hierbei ist:
Wenn ich folgendes schreibe und sonst nichts am Code änder
Code:
Telefonat gespraech[]; // Array der Telefonate
Code:
error C2070: 'Telefonat []': Ungültiger sizeof-Operand
"Ok.", dachte ich mir, "änder ich doch einfach mal in i < 5 zu Testzwecken.".
Also steht jetzt folgendes da:
Code:
for (int i = 0; i < 5; i++){
cout << i+1 << ") " << telefonA.gespraech[i].getVorwahl() << "-" << telefonA.gespraech[i].getRufnummer() << " " << telefonA.gespraech[i].getGesamtkosten() << " Cent\n" << endl;
gesamtkosten += (double) telefonA.gespraech[i].getGesamtkosten();
}
und jetzt kriege ich folgende Fehlermeldung:
Die Fehlermeldung wird nach dem Einlesen der Attribute ausgeworfen, sprich: Zum Zeitpunkt der Objekterstellung. Aber warum??
Hiermit wird das Objekt erstellt:
Code:
// Erzeuge ein Telefonat-Objekt mit den entsprechenden Werten.
gespraech[i] = Telefonat(aVorwahl,aRufnummer,aDauer);
Im ersten Fall wäre i=0.
Das spuckt Visual Studio aus:
s. Anhang
Hoffe ihr könnt mir helfen...