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

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

Подскажите как удалить объект, оставив виртуальное наследование.
 
Для: Crucian
Добавь в Base и Child виртуальные деструкторы.
 
Большое спасибо. Разобрался :D
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab