考虑下面的Utility类:
它将包含许多具有相同签名int function(int a, int b);
Utility.h
class Utility
{
public:
template<typename T, typename A, typename B>
static int get_function(T% function, int% number)
{
function = (T) add;
number = 10;
return 0;
}
static int add (int a, int b) {
return a+b;
}
};
这包含一个模板方法(get_function()),用于从Utility
类中可用的工厂方法中分配函数指针。
Main.cpp的
typedef int (__stdcall *FP) (int a, int b);
ref class FPClass
{
public:
static FP fp;
static int number;
static void apply_function()
{
Utility::get_function<FP, int, int>(FPClass::fp, number);
cout << FPClass::fp(25, 45);
}
};
void main()
{
FPClass::apply_function();
}
我想要实现的是,通过模板方法(FPClass::fp
)分配函数指针(Utility:get_function
)。
但是被调用的函数(Utility:get_function
)不修改函数指针参数(总是为null)。
那是为什么?