• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

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

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

Crucian

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

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

Для: Crucian
Добавь в Base и Child виртуальные деструкторы.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!