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

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

Наш партнер Genesis Hackspace
  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. hitesh
    Ответов:
    3
    Просмотров:
    71
  2. Hackerelite
    Ответов:
    24
    Просмотров:
    249
  3. phreakerrazdva
    Ответов:
    9
    Просмотров:
    127
  4. nikos
    Ответов:
    63
    Просмотров:
    1.127
  5. Bohdan
    Ответов:
    6
    Просмотров:
    191

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