• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы 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 виртуальные деструкторы.
 
Мы в соцсетях:

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