我在一个基类和派生类中有同名但不同签名的函数。当我试图在继承自派生类的另一个类中使用基类的函数时,会收到错误提示。请查看以下代码:
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)
如果我从类B
中移除int foo(int i){};
或者将其重命名为foo1
,一切都能正常工作。
这有什么问题吗?