特定のクラス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)
。期待される動作を得るにはどうすればよいですか?
ありがとう