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

  • Автор темы Vseslavur
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

Vseslavur

#1
Мои приветствия, Благородные Донны и Доны!
С переходом на 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);
то все молча компилится. Однако эти два варианта неприемлемы, ибо придется МНОГО где править...
Я НЕ МОГУ ПОНЯТЬ, почему компилятор не может автоматически подставить нужную функцию? Хотя в прошлой версии делал это без вопросов... Буду рад услышать конструктивные комментарии.
Благодарю за внимание!
 
Статус
Закрыто для дальнейших ответов.