pure virtual method called terminate called without an active exception Aborted
 

Ya que me ha costado dios y ayuda corregir este error en una práctica de POO para la universidad... Y no hay prácticamente casi ninguna referencia en castellano en la red, voy a comentar cuál ha sido mi solución al problema.

En otras página daban como solución buscar constructores y destructores que llamaran a métodos virtuales (Lo cual no debemos hacer), o también podíamos buscar objetos que se hayan borrado en memoria, y el programa se haya vuelto loco, y ya no sabe si estamos en una clase derivada o en la clase base, que es virtual pura.

Pero por desgracia, mi problema no tenía nada que ver con esto....

Entonces os cuento. Yo tenía un método duplicar(), que llamaba a otro clonar(), el cual copiaba en un nuevo objeto de la nueva clase, la misma estructura que tuviera el objeto actual de la clase.

Lo hacía mediante:

GrupoFigurillas* grupo;
grupo=new GrupoFiguras((*this));


Pues esto es lo que causaba el dichoso error. He quitado el *this, y finalmente he copiado todo el contenido del objeto "a mano". Es decir, he copiado vector por vector (componente a componente), y luego las variables.

Por cierto, tanto clonar(), como duplicar(), son objetos NO VIRTUALES de una clave derivada, pero si son VIRTUALES PUROS en la clase base.

Espero que alguien le sirva de ayuda


(Aun no hay comentarios) Insertado el 2009-12-15 00:38:04 por Squallther