带模板的重载方法

时间:2016-02-04 12:01:17

标签: c++

我有以下课程:

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

当我使用foo的{​​{1}}实例与MyClass对象调用A时,foo MyClass方法被调用而不是fooMyTmp的1}}。我使用gcc 4.4.2使用-O3。有什么提示吗?

1 个答案:

答案 0 :(得分:7)

派生类中的成员函数与基类中的成员函数名称相同隐藏基类中的函数。

如果您希望MyTmp<T>::foo可以使用MyClass,则可以作为使用指令:

class MyClass: public MyTmp<Other> {
public:
   using MyTmp::foo;
   void foo(const B& b);
}