我正在尝试编写一个模板,该模板将非模型参数的模板转换为静态成员函数:
#include <iostream>
using namespace std;
class C {
public:
static void method()
{
cout << "C::method" << endl;
}
};
typedef void (C::*pMethod)();
template<typename T, pMethod>
void callingFunction()
{
T c;
pMethod aPointerToMember = &T::method;
(c.*aPointerToMember)();
}
int main()
{
callingFunction<C, &C::method>();
return 0;
}
但是在main中调用函数时总是会出错:
error: no matching function for call to 'callingFunction()' // mingw
如果成员函数不是静态的,它可以工作,我怎样才能使它与静态函数一起工作?
感谢。
谢谢
答案 0 :(得分:5)
对于静态成员函数,将typedef更改为typedef void (*pMethod)();
- 就像它是一个自由函数一样。