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

Тема в разделе "Общие вопросы по С и С++", создана пользователем Crucian, 6 ноя 2007.

  1. Crucian

    Crucian Гость

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

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

    Код (Text):
    //----------------------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. Причем только в случае виртуального наследования.

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

    Pasha Гость

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

    Crucian Гость

    Репутация:
    0
    Большое спасибо. Разобрался :D
     
Загрузка...
Похожие Темы - Проблемы виртуальным наследованием
  1. Define

    Проблема Проблемы с шеллом

    Define, 18 июн 2017, в разделе: Kali Linux
    Ответов:
    2
    Просмотров:
    138
  2. Oksy
    Ответов:
    25
    Просмотров:
    833
  3. nikos
    Ответов:
    31
    Просмотров:
    1.056
  4. lmike
    Ответов:
    18
    Просмотров:
    623
  5. VikTor1990
    Ответов:
    0
    Просмотров:
    166

Поделиться этой страницей