Я пытаюсь перегрузить некоторую функцию шаблона для выполнения определенного действия, если я его вызываю, используя данный класс 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)
. Что я могу сделать, чтобы получить ожидаемое поведение?
Спасибо