Tengo un objeto que necesita destruirse a sí mismo.¿Puede un objeto destruirse a sí mismo?
¿Se puede hacer?
¿Es incorrecto el ejemplo?
void Pawn::specialMoves(Coordinate const& from, Coordinate const& to, int passant) { /*...*/ m_board->replace(to, new Queen(m_colour));//replace pawn by queen } void Board::replace(Coordinate const &to, Piece* newPiece) { delete tile[to.x()][to.y()]; tile[to.x()][to.y()] = newPiece; }
¿Qué objeto se está destruyendo aquí?FTR, destruyéndose a sí mismo sería 'delete this;' o 'this-> ~ T();' (siendo 'T' su tipo). Ambos son válidos pero requieren mucho cuidado para ser utilizados correctamente. –
No veo nada destruyéndose en su ejemplo. –
Peón se borra a sí mismo. Me imagino que una vez 'm_board-> replace (to, new Queen (m_colour));' ha sido llamada function void Pawn :: specialMoves (...) 'no puede terminar' – danjjl