我有以下课程:
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
方法被调用而不是foo
类MyTmp
的1}}。我使用gcc 4.4.2使用-O3。有什么提示吗?
答案 0 :(得分:7)
派生类中的成员函数与基类中的成员函数名称相同隐藏基类中的函数。
如果您希望MyTmp<T>::foo
可以使用MyClass
,则可以作为使用指令:
class MyClass: public MyTmp<Other> {
public:
using MyTmp::foo;
void foo(const B& b);
}