【发布时间】:2010-09-29 11:50:33
【问题描述】:
我有一个同名的函数,但在基类和派生类中具有不同的签名。当我尝试在从派生继承的另一个类中使用基类的函数时,我收到一个错误。见以下代码:
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 重命名它,一切正常。
这有什么问题?
【问题讨论】:
-
技术上是 this question 的副本,但这个标题和答案更好。
标签: c++ function inheritance lookup c++-faq