동일한 이름의 함수가 있지만 기본 및 파생 클래스에 다른 서명이 있습니다. 파생에서 상속 된 다른 클래스에서 기본 클래스의 함수를 사용하려고하면 오류가 발생합니다. 다음 코드를 참조하십시오.
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);
}
};
gcc 컴파일러에서 다음 오류를 수신합니다.
In member function `void C::bar()': no matching function for call to `C::foo(std::string&)' candidates are: int B::foo(int)
int foo(int i){};
class B
에서 제거 하거나에서 이름을 바꾸면 foo1
모든 것이 잘 작동합니다.
이것의 문제는 무엇입니까?