For example, install<double>(&T::print);
could not pass compile. How could I pass T::print
as parameter? Remove template <typename M>
could pass compile. But I could not remove template <typename M>
, because I need it in the true code. Thank you in advance.
#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;
}
};
Aucun commentaire:
Enregistrer un commentaire