c – 如果baseclass具有两个相同名称的函数,则无法找到基类函数
发布时间:2020-12-16 05:37:35 所属栏目:百科 来源:网络整理
导读:我有一个基类,它有两个同名的函数,但在2级继承中有不同的签名. struct A { virtual void f(int) { } virtual void f(int,int) { }; virtual void f1(int) { }};struct B: public A { };struct C: public B { void f(int,int) { } void f1(int) { }};int main
我有一个基类,它有两个同名的函数,但在2级继承中有不同的签名.
struct A { virtual void f(int) { } virtual void f(int,int) { }; virtual void f1(int) { } }; struct B: public A { }; struct C: public B { void f(int,int) { } void f1(int) { } }; int main() { C obj; obj.f1(0); obj.f(0,0); obj.f(0); // (1) cannot be found obj.B::f(0); // (2) works } 我希望我的编译器(gcc-4.3.2)能够在(1)找到正确的定义,但是我得到了 g++ main.cpp -o main main.cpp: In function 'int main()': main.cpp:20: error: no matching function for call to 'C::f(int)' main.cpp:10: note: candidates are: virtual void C::f(int,int) distcc[2200] ERROR: compile main.cpp on localhost failed make: *** [main] Error 1 (2)另一方面工作. 我需要做些什么来使(1)一般工作? 解决方法
在C的定义中使用A :: f写入
你是名字隐藏的受害者! void C :: f(int,int)隐藏void A :: f(int),只是因为. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |