Ich wollte 1000 Iterationen eines Programms ausführen, also setze einen Zähler für 1000 in main. Ich musste verschiedene Variablen nach jeder Iteration reinitialisieren, und da der Klassenkonstruktor alle Initialisierungen bereits ausgeschrieben hatte, entschied ich mich, das nach jeder Iteration aufzurufen, wobei das Ergebnis jeder Iteration in einer Variable in main gespeichert wurde.Der Aufruf eines Konstruktors, Variablen neu zu initialisieren, scheint nicht zu funktionieren.
Als ich jedoch den Konstruktor anrief, hatte es keinen Effekt ... Ich brauchte eine Weile, um es herauszufinden - aber es hat nichts reinitialisiert!
Ich habe eine Funktion genau wie der Konstruktor erstellt - also würde das Objekt eine eigene Version haben. Als ich das anrief, hat es alles reinitialisiert, wie ich es erwartet hatte.
int main()
{
Class MyClass()
int counter = 0;
while (counter < 1000)
{ stuff happens }
Class(); // This is how I tried to call the constructor initially.
// After doing some reading here, I tried:
// Class::Class();
// - but that didn't work either
/* Later I used...
MyClass.function_like_my_constructor; // this worked perfectly
*/
}
... Könnte jemand versuchen zu erklären, warum, was ich tat falsch war, oder hat nicht funktioniert, oder dumm war oder was Sie haben? Ich meine - mental, ich habe mir nur gedacht - Mist, ich kann diesen Konstruktor nennen und alles neu reinitialisieren lassen. Werden Konstruktoren (idealerweise) NUR aufgerufen, wenn ein Objekt erstellt wird?
Es scheint möglich mit * Platzierung neu *. http://stackoverflow.com/questions/6868363/how-to-recall-a-constructor-of-an-initialised-object – Eonil
'MyClass = Class();'? –