1. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

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

  1. Crucian

    Crucian Гость

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

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

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

    Pasha Гость

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

    Crucian Гость

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

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

    Define, 18 июн 2017, в разделе: Kali Linux
    Ответов:
    2
    Просмотров:
    187
  2. Oksy
    Ответов:
    37
    Просмотров:
    1.554
  3. nikos
    Ответов:
    31
    Просмотров:
    1.316
  4. lmike
    Ответов:
    18
    Просмотров:
    772
  5. VikTor1990
    Ответов:
    0
    Просмотров:
    213

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