Приветствую, господа, и, дамы, если есть, конечно тоже.
Попробовал поискать здесь и в инете, но безуспешно. Если коротко, пример:
class P1 {};
class P2 {};
class A
{
public:
void f( P1* );
};
class B
{
public:
void f( P2* );
};
class C :
public A,
public B
{
public:
C()
{
P2* p;
f( p );
}
};
int main()
{
C q;
}
на что например ICL (уверен, что справедливо) отвечает:
test1.cpp
test1.cpp(18): error: "С::f" is ambiguous
f( p );
^
Почему не разрешена такая перегрузка, с точки зрения компилятора — все однозначно. Можно просто указать пункт стандарта в котором описана данная ситуация, я не нашел.
В моей ситуции указывать явно имя базового класса при вызове f() нельзя, (хотя бы потому что оно очень длинное, это шаблон). Хочется найти элегантное решение.
Спасибо.
Исправлена раскраска — WH
... << RSDN@Home 1.1.3 beta 1 >>