Resolución de sobrecarga de C ++ [duplicado]

Esta pregunta ya tiene una respuesta aquí:

Función con el mismo nombre pero con firma diferente en la clase derivada 2 respuestas

Dado el siguiente ejemplo, ¿por qué tengo que usar explícitamente la declaraciónb->A::DoSomething() en lugar de solob->DoSomething()?

¿No debería la resolución de sobrecarga del compilador averiguar de qué método estoy hablando?

Estoy usando Microsoft VS 2005. (Nota: el uso de virtual no ayuda en este 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;
}

Respuestas a la pregunta(9)

Su respuesta a la pregunta