Проблемы с виртуальным наследованием

  • Автор темы Crucian
  • Дата начала
C

Crucian

Гость
#1
Здравствуйте господа програмисты.
Есть такой вопрос:

Base-базовый класс.
От него наследую класс Child, при этом использую виртуальное наследование.

Код:
//----------------------Base.h-----------
class Base
{public:

virtual void Move(int dx,int dy)=0;
};

//----------------------Child.h-----------
#include "Base.h"

class Child:virtual public Base
{ public:
int X;
int Y;

Child(int _X,int _Y)
{X=_X;Y=_Y;}

void Move(int dx,int dy)
{X=X+dx;Y=Y+dy;}
};

//------------------Main.h-------------------

void main()
{
Base* sh=new Child(0,0);

delete sh;
sh=0;
}

Ошибка возникает на этапе выполнения программы в момент
вызова delete. Причем только в случае виртуального наследования.

Подскажите как удалить объект, оставив виртуальное наследование.
 
P

Pasha

Гость
#2
Для: Crucian
Добавь в Base и Child виртуальные деструкторы.