例如,install<double>(&T::print);
无法通过编译。我如何将T::print
作为参数传递?删除template <typename M>
可以通过编译。但我无法删除template <typename M>
,因为我需要真正的代码。提前谢谢。
#include <iostream>
template<typename T>
class Base
{
public:
template <typename M>
void install(void (T::*method)(int))
{
std::cout << "Hello" << std::endl;
}
};
template<typename T>
class Child : public Base<T>
{
public:
void test()
{
install<double>(
&T::print);
}
};
class Grandson : public Child<Grandson>
{
public:
void print(int n)
{
std::cout << "Num:" << n << std::endl;
}
};