Hola, ante todo! disculpen que no seguí comentando nada del programita que estaba haciendo. Me dieron mas tiempo y ya voy a comentar. Pero tengo el siguiente problema:
Cuando yo le digo al puzzle que haga un movimiento desde el main, seria algo así:
Move *movida = new MoveDOWN(g,puzzle);
puzzle->makeMove(movida).
y makeMove hace esto:
if ( movida->makeMove ( this ) )
{
Move *copia = movida->copy();
history.push_back ( copia ); //Guarda una copia del movimiento en el historial.
return true;
}
return false;
El código para pedir copias a las movidas, es dependiente del movimiento, por ejemplo "MoveDOWN":
Move* MoveDOWN::copy()
{
return new MoveDOWN(*this);
}
Y tengo el constructor Sobrecargado para poder recibir movimientos.
Move::Move( Move &movimiento)
{
this->_pieza = movimiento.getPieza();
this->_puzzle = movimiento.getPuzzle();
this->_origen = movimiento.getOrigenPieza();
}
LA pregunta acá es que cuando yo le haga un delete a "Movimiento" el fue el que creo al movimiento copia, entonces siguiendo la regla "El que crea destruye" se me rompe todo, o sea, no puedo hacerle despues un delete a "copia" porque me va a decir que ya lo hice cuando deletie al movimiento original.
¿¿ Tienen alguna idea de como puedo arreglar esto ??
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.