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

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

  1. Crucian

    Crucian Гость

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

    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 Гость

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

    Crucian Гость

    Большое спасибо. Разобрался :D
     
Загрузка...
Похожие Темы - Проблемы виртуальным наследованием
  1. aliaksandr89
    Ответов:
    3
    Просмотров:
    129
  2. Amfion
    Ответов:
    5
    Просмотров:
    124
  3. wowa
    Ответов:
    7
    Просмотров:
    381
  4. John_Tavarez
    Ответов:
    0
    Просмотров:
    338
  5. Валентин Амбер
    Ответов:
    11
    Просмотров:
    347

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