Quería ejecutar 1,000 iteraciones de un programa, así que establezca un contador para 1000 en main. Necesitaba reinicializar varias variables después de cada iteración, y como el constructor de la clase tenía todas las inicializaciones ya escritas, decidí llamar a eso después de cada iteración, con el resultado de cada iteración almacenada en una variable en main.Llamar a un constructor para reinicializar variables no parece funcionar?
Sin embargo, cuando llamé al constructor, no tuvo ningún efecto ... me tomó un tiempo darme cuenta, ¡pero no reinició nada!
Creé una función exactamente igual que el constructor, por lo que el objeto tendría su propia versión. Cuando llamé eso, reinició todo como esperaba.
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
*/
}
... Podría alguien intentar explicar por qué lo que hice estuvo mal, o no trabajar, o era tonto o lo que sea? Es decir, mentalmente, pensé, mierda, puedo llamar a este constructor y reiniciar todo esto. ¿Los constructores (idealmente) SOLO se llaman cuando se crea un objeto?
Parece posible con * placement new *. http://stackoverflow.com/questions/6868363/how-to-recall-a-constructor-of-an-initialised-object – Eonil
'MyClass = Class();'? –