C++ 带模板的重载方法

C++ 带模板的重载方法,c++,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(con

我有以下课程:

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);
}
class A:public Util{}
类B:公共Util,公共接口{}
模板
类MyTmp{
公众:
void foo(const A&A);
}
类MyClass:公共MyTmp{
公众:
void foo(康斯特食宿);
}

当我使用带有
a
对象的
MyClass
实例调用
foo
时,由于未知原因调用
MyClass
foo
方法,而不是类
MyTmp
foo
。我使用GCC4.4.2使用-O3。任何提示?

派生类中与基类中的成员函数同名的成员函数将隐藏基类中的函数

如果您希望
MyTmp::foo
可从
MyClass
获得,您可以使用以下指令:

class MyClass: public MyTmp<Other> {
public:
   using MyTmp::foo;
   void foo(const B& b);
}
class MyClass:public MyTmp{
公众:
使用MyTmp::foo;
void foo(康斯特食宿);
}

它调用
MyClass
foo
方法是什么意思?你是说。。。代码没有编译?
A
不是
B
@Barry No代码编译,但在运行时调用了错误的方法。真奇怪。然而,在应用了TartanLlama的解决方案后,现在该程序开始工作。