Resolução de sobrecarga em C ++ [duplicada]
Esta pergunta já tem uma resposta aqui:
unção com o mesmo nome, mas com assinatura diferente na classe derivad 2 respostas Dado o exemplo a seguir, por que preciso usar explicitamente a instruçãob->A::DoSomething()
em vez de apenasb->DoSomething()
?
A resolução de sobrecarga do compilador não deve descobrir qual método eu estou falando?
Estou usando o Microsoft VS 2005. (Nota: o uso do virtual não ajuda nesse caso.)
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;
}