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

Тема в разделе "Borland C++ Builder & Kylix", создана пользователем Vseslavur, 11 янв 2010.

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

    Vseslavur Гость

    Мои приветствия, Благородные Донны и Доны!
    С переходом на 2010 builder возникла раздражающая неприятность. Есть такой код:
    Код (Text):
    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:
    };
    где-то в коде:
    Код (Text):
    E e;
    e.ff(1);
    e.ff(1.5);
    При компиляции выдается ошибка [BCC32 Error] File1.cpp(59): E2014 Member is ambiguous: 'D1::ff' and 'D2::ff'
    Если же сделать вот так:
    Код (Text):
    class E : virtual public C,
    public D1,
    public D2
    {
    public:
    [b] using D1::ff;
    using D2::ff;
    [/b]
    };
    или вот так:
    Код (Text):
    B* b = new E();
    b->ff(1);
    b->ff(1.5);
    то все молча компилится. Однако эти два варианта неприемлемы, ибо придется МНОГО где править...
    Я НЕ МОГУ ПОНЯТЬ, почему компилятор не может автоматически подставить нужную функцию? Хотя в прошлой версии делал это без вопросов... Буду рад услышать конструктивные комментарии.
    Благодарю за внимание!
     
Загрузка...
Похожие Темы - Codegear 2010 Перегрузка
  1. NickProstoNick
    Ответов:
    3
    Просмотров:
    2.461
  2. cybert
    Ответов:
    0
    Просмотров:
    101
  3. Zhuk
    Ответов:
    0
    Просмотров:
    567
  4. Hollyman
    Ответов:
    0
    Просмотров:
    1.079
  5. Urban-42Rus
    Ответов:
    0
    Просмотров:
    1.089
Статус темы:
Закрыта.

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