加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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);
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读