Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

множественное наследование

354
03 июля 2008 года
ШпиЁн
468 / / 19.02.2006
доброго всем времени.
суть вопроса будет ясна из программки:
Код:
class base
{
public:
    base()
    {
        cout << "base" << endl;
    }

    virtual ~base(){}
};

class a : public base
{
public:
    a()
    {
        cout << "a" << endl;
    }
    ~a(){}
};

class b : public base
{
public:
    b()
    {
        cout << "b" << endl;
    }
    ~b(){}
};

class test : public a, public b
{
public:
    test()
    {
        cout << "test" << endl;
    }
    ~test(){}
};

int main()
{
    base * m = new test(); // error C2594: 'initializing' : ambiguous conversions from 'test *' to 'base *'
   
    getchar();
   
    return 0;
}

если делаю так:
 
Код:
class test : public base, public a, public b
{
public:
    test()
    {
        cout << "test" << endl;
    }
    ~test(){}
};

компилируется, но выдает предупреждение о том что base уже является базовым классом для a и для b
в общем - как нормально это реализовать?

необходимо хранить указатели на объекты, но указатели все должны быть base.
понимаю что коряво. :D
354
03 июля 2008 года
ШпиЁн
468 / / 19.02.2006
упс!
проблема решилась виртуальным наследованием. :D
тема закрыта
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог