Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: neroir en 25 de Mayo de 2009, 05:20:15 PM

Título: Problema con destructores
Publicado por: neroir en 25 de Mayo de 2009, 05:20:15 PM
Buenas.

Tengo un pequeño problema con unos destructores y no consigo solucionarlo. A ver si alguien q no sea tan novato como yo con el C++ puede echarme una mano.

Tengo una clase CWarehouse que deriva de una clase base CMapObject y en un punto de mi programa, tengo un puntero a un CMapObject. En principio, ese puntero podrá estar apuntando a una instancia de la clase base, o a una de la clase derivada (CWarehouse).

Si hago un delete del puntero, el programa llama siempre al destructor de la clase base, y nunca al de la derivada, por lo que he recordado que en casos como este lo que hay que hacer es declarar el destructor de la clase base como virtual.... y es aquí donde aparecen los problemas, ya que me da un error de linkado:

error LNK2019: unresolved external symbol "public: __thiscall CMapObject::~CMapObject(void)" (??1CMapObject@@QAE@XZ) referenced in function "public: void * __thiscall CMapObject::`scalar deleting destructor'(unsigned int)" (??_GCMapObject@@QAEPAXI@Z)

Alguna idea de qué está causando el problema exactamente y cómo debo resolverlo?
Título: Re: Problema con destructores
Publicado por: neroir en 25 de Mayo de 2009, 05:42:08 PM
Me respondo yo solo... era por tener includes cruzados entre la clase del CMapObject y la que hacía el delete :P