Dans l'exemple suivant, pourquoi dois-je utiliser explicitement l'instruction b->A::DoSomething()
plutôt que juste b->DoSomething()
?
La résolution des surcharges du compilateur ne devrait-elle pas déterminer la méthode dont je parle ?
J'utilise Microsoft VS 2005. (Note : l'utilisation de virtual n'aide pas dans ce cas).
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;
}