如果我使用给定的类MyClass或任何派生类MyClassDer调用它,我正在尝试重载一些模板函数以执行特定的操作。这是代码:
#include <iostream>
struct MyClass {
virtual void debug () const {
std::cerr << "MyClass" << std::endl;
};
};
struct MyClassDer : public MyClass {
virtual void debug () const {
std::cerr << "MyClassDer" << std::endl;
};
};
template <typename T> void func (const T& t) {
std::cerr << "func template" << std::endl;
}
void func (const MyClass& myClass) {
std::cerr << "func overloaded" << std::endl;
myClass.debug ();
}
int main(int argc, char **argv) {
func (1);
MyClass myClass;
func (myClass);
MyClassDer myClassDer;
func (myClassDer);
}
输出是:
func template
func overloaded
MyClass
func template
func (myClassDer)
调用模板函数而不是void func (const MyClass& myClass)
. 我该怎么做才能获得预期的行为?
谢谢