|
JLI Spieleprogrammierung
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 16.06.2008, 16:51 Titel: std::vector initialisiert die Elemente nicht |
|
|
Hey allerseits,
mein C++ ist etwas eingerostet, daher kann es sein, dass ich den Wald vor lauter Bäumen nicht sehe.
Ich möchte ein std::vector aus Instanzen der Klasse SPE erstellen. Der Konstruktor gibt testweise "init" per stdout aus.
Code: | std::vector<SPE> speSet(4); |
Sollte, soweit ich mich recht erinnere, ein vector aus 4 Instanzen von SPE erstellen. Dummerweise wird nur ein einziges mal "init" ausgegeben, und das Programm schmiert folglich ab weil die Klassenelemente nicht initialisiert wurden..
Die klassische Variante:
Code: | SPE* speSet = new SPE[4]; |
läuft ohne Probleme.
Was übersehe ich hier?
Grüße,
Dennis
Hier der Code mal isoliert zum Testen (bloß andere Klassennamen):
Code: | #include <iostream>
#include <vector>
class Test {
public:
Test() {
std::cout << "test" << std::endl;
}
};
int main(int argc, char** argv) {
std::cout << "Vector:" << std::endl;
std::vector<Test> testVector(4);
std::cout << "Array:" << std::endl;
Test* testArray = new Test[4];
delete[] testArray;
}
|
Ausgabe:
Code: |
Vector:
test
Array:
test
test
test
test
|
|
|
Nach oben |
|
|
FH Super JLI'ler
Alter: 36 Anmeldedatum: 16.10.2004 Beiträge: 438
Medaillen: Keine
|
Verfasst am: 16.06.2008, 17:21 Titel: |
|
|
Hi.
Anscheinend tut der vector nur 1 Objekt erzeugen, und dieses dann für alle anderen Objekte kopieren. Daher wird der Konstruktor nur 1x aufgerufen, weil es halt danach nur noch kopiert wird.
Keine Ahnung, ob es daran liegt, aber das scheint mir die Begründug zu sein, warum er nur 1x Init ausgibt.
Gruß
FH _________________ goto work, send your kids to school
follow fashion, act normal
walk on the pavement, watch T.V.
save for your old age, obey the law
Repeat after me: I am free |
|
Nach oben |
|
|
xardias JLI Master
Alter: 38 Anmeldedatum: 28.12.2003 Beiträge: 804 Wohnort: Palo Alto, CA Medaillen: Keine
|
Verfasst am: 16.06.2008, 17:26 Titel: |
|
|
morricone hat gerade den passenden link im irc gepostet..
http://www.cplusplus.com/reference/stl/vector/vector.html
der vector konstruktor den ich verwendet habe kopiert ein einzelnes element n mal, statt jedes mal ein neues zu erzeugen.. damit hätte sich das geklärt |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|