c – 带模板的重载方法
发布时间:2020-12-16 10:01:28 所属栏目:百科 来源:网络整理
导读:我有以下课程: class A: public Utildouble {}class B: public Utildouble,public Interface {}templateclass Tclass MyTmp {public: void foo(const A a);}class MyClass: public MyTmpOther {public: void foo(const B b);} 当我使用带有A对象的MyClass实
我有以下课程:
class A: public Util<double> {} class B: public Util<double>,public Interface {} template<class T> class MyTmp { public: void foo(const A& a); } class MyClass: public MyTmp<Other> { public: void foo(const B& b); } 当我使用带有A对象的MyClass实例调用foo时出于未知原因,调用MyClass的foo方法而不是MyTmp类的foo.我正在使用gcc 4.4.2使用-O3.有小费吗? 解决方法
派生类中的成员函数与基类中的成员函数名称相同,隐藏了基类中的函数.
如果你想从MyClass获得MyTmp< T> :: foo,你可以作为using-directive使用: class MyClass: public MyTmp<Other> { public: using MyTmp::foo; void foo(const B& b); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |