JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=efe6e7df2be1d6fb6ab41d6b6eafccdaMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

std::vector initialisiert die Elemente nicht

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
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

BeitragVerfasst am: 16.06.2008, 16:51    Titel: std::vector initialisiert die Elemente nicht Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
FH
Super JLI'ler


Alter: 36
Anmeldedatum: 16.10.2004
Beiträge: 438

Medaillen: Keine

BeitragVerfasst am: 16.06.2008, 17:21    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
xardias
JLI Master


Alter: 38
Anmeldedatum: 28.12.2003
Beiträge: 804
Wohnort: Palo Alto, CA
Medaillen: Keine

BeitragVerfasst am: 16.06.2008, 17:26    Titel: Antworten mit Zitat

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 Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
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

Impressum