child-classes in vector speichern?

hmh...macht keinen Spass im Unrecht zu sein :-(
Ich dachte immer, dass der "Schleifeninhalt" in diesem Falle erst NACH dem dekrementieren abgearbeitet wird...und das diese Notation performanter ist, weil sie pro Durchlauf 1 ASM-Anweisung weniger braucht.
...Und wieso meckert weder der Compiler noch die entstehende Software, dass delete scene[2] nicht klappt(wenn es überhaupt ausgeführt wird) ?

Leider kann ich den Destructor nicht debuggen - oder gibt's da auch wieder ein kleines Geheimnis?
 
Probiers doch einfach aus...
Code:
int main(){
        for(int i = 5; i > 0; --i)
                std::cout << i << std::endl;
}

Und den Destructor einfach Breakpoint rein und debuggen... oder ne Ausgabe ebenfalls mit cout zum Debuggen...
...Und wieso meckert weder der Compiler noch die entstehende Software, dass delete scene[2] nicht klappt(wenn es überhaupt ausgeführt wird) ?
DER Compiler kann das nicht wissen weil dein vector ein dynamisch anwachsender Speicher ist...
Ausserdem muss dein Programm an gesagter stelle sich nich gleich
mit nem segm fault verabschieden Fehler kann sich an ganz andrer stelle
auswirken...

Gruß

RedWing
 
Naja, C/C++ läßt dir natürlich alle Möglichkeiten. Wenn du auf eine Element außerhalb des Vektors zugreifen möchtest, kannst du das auch tun.

Um solche Fehler besser zu finden, solltest du evtl. in Betracht ziehen bei Vektoren statt den [] operator, die Methode at() zu benutzen.
Code:
vector<int> v(2);

v[2]; /* Hm. Im schlimmsten Fall ein Speicherzugriffsfehler.  */
v.at (2) /* Laufzeitfehler! std::out_of_range exception */

Das heißt at() prüft jedesmal zur Laufzeit ob der Index auch innerhalb der Grenzen des Vektors liegt und löst anderenfalls eine Ausnahme aus. So merkt man relativ schnell das etwas falsch ist. Allerdings geht das natürlich etwas auf die Performance.

Man könnte aber z.B. im Release Modus [] verwenden und im Debug Modus at().
 
...an Erfahrung.

Mir tut die Diskussion ganz gut.
Schliesslich möchte ich ja Unwissenheit gegen Wissen eintauschen :)
 
Zurück