1. Набираем команду codeby webinar. Набираем команду для организации и проведения вебинаров. Подробнее ...

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

    Скрыть объявление
  3. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

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

Codegear 2010! Перегрузка виртуальных функций...

Тема в разделе "С и С++", создана пользователем Vseslavur, 11 янв 2010.

Статус темы:
Закрыта.
  1. Vseslavur

    Vseslavur Гость

    Репутация:
    0
    Мои приветствия, Благородные Донны и Доны!
    С переходом на 2010 builder возникла раздражающая неприятность. Есть такой код:
    Код:
    class B
    {
    public:
    virtual void ff(int) = 0;
    virtual void ff(double) = 0;
    virtual ~B()
    {
    }
    };
    
    class D1 : virtual public B
    {
    public:
    virtual void ff(int)
    {
    }
    };
    
    class D2 : virtual public B
    {
    public:
    virtual void ff(double)
    {
    }
    };
    
    class E : virtual public C,
    public D1,
    public D2
    {
    public:
    };
    где-то в коде:
    Код:
    E e;
    e.ff(1);
    e.ff(1.5);
    При компиляции выдается ошибка [BCC32 Error] File1.cpp(59): E2014 Member is ambiguous: 'D1::ff' and 'D2::ff'
    Если же сделать вот так:
    Код:
    class E : virtual public C,
    public D1,
    public D2
    {
    public:
    [b]	using D1::ff;
    using D2::ff;
    [/b]
    };
    или вот так:
    Код:
    B* b = new E();
    b->ff(1);
    b->ff(1.5);
    то все молча компилится. Однако эти два варианта неприемлемы, ибо придется МНОГО где править...
    Я НЕ МОГУ ПОНЯТЬ, почему компилятор не может автоматически подставить нужную функцию? Хотя в прошлой версии делал это без вопросов... Буду рад услышать конструктивные комментарии.
    Благодарю за внимание!
     
Загрузка...
Статус темы:
Закрыта.

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