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的解决方案后,现在该程序开始工作。