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;
}

questionAnswers(9)

yourAnswerToTheQuestion