Ich habe eine Funktion mit demselben Namen, aber mit unterschiedlicher Signatur in einer Basisklasse und abgeleiteten Klassen. Wenn ich versuche, die Funktion der Basisklasse in einer anderen Klasse zu verwenden, die von der abgeleiteten erbt, wird eine Fehlermeldung angezeigt. Siehe folgenden Code:
class A
{
public:
void foo(string s){};
};
class B : public A
{
public:
int foo(int i){};
};
class C : public B
{
public:
void bar()
{
string s;
foo(s);
}
};
Ich erhalte den folgenden Fehler vom gcc-Compiler:
In member function `void C::bar()': no matching function for call to `C::foo(std::string&)' candidates are: int B::foo(int)
Wenn ich int foo(int i){};
aus der Klasse entferne B
oder aus umbenenne foo1
, funktioniert alles einwandfrei.
Was ist das Problem damit?