Функция скрыта функцией с тем же именем в подклассе (но с другой подписью). Вы можете отобразить его с помощью оператора using, как при использовании A :: DoSomething ();
от вопрос уже есть ответ здесь:
Функция с тем же именем, но другой подписью в производном классе 2 ответаУчитывая следующий пример, почему я должен явно использовать операторb->A::DoSomething()
а не простоb->DoSomething()
?
Разве компилятор не должен выяснить, о каком методе я говорю?
Я использую Microsoft VS 2005. (Примечание: в этом случае использование virtual не помогает.)
class A
{
public:
int DoSomething() {return 0;};
};
class B : public A
{
public:
int DoSomething(int x) {return 1;};
};
int main()
{
B* b = new B();
b->A::DoSomething(); //Why this?
//b->DoSomething(); //Why not this? (Gives compiler error.)
delete b;
return 0;
}