Gegeben das folgende Beispiel, warum muss ich explizit die Anweisung b->A::DoSomething()
statt nur b->DoSomething()
verwenden?C++ - Überladungsauflösung
Sollte die Überladungsauflösung des Compilers nicht herausfinden, über welche Methode ich spreche?
Ich verwende Microsoft VS 2005 (Hinweis: virtuelle Anwendung der in diesem Fall nicht helfen.)
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;
}
Ich versuche, DoSomething() in Klasse A mit einem Zeiger auf Klasse B aufzurufen. – Abe