I have an object which needs to destroy itself.
-
Can it be done?
-
Is the example wrong?
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; }
Yes, it’s legal to call
delete thisfrom inside a member function. But there’s very rarely a good reason to do so (especially if you’re writing idiomatic C++ where most memory-management tasks should be delegated to containers, smart pointers, etc.).And you need to be very careful:
new(notnew[]).