我想做类似以下的事情:
基本上,拥有一个与数字列表相关的行为函数地址数组。
如果可以使用像Boost.Lambda这样的外部类,那就可以了。
编辑:经过一些讨论,我得出结论,我没有表达清楚。请阅读在运行时创建函数指针的函数。
for(int i=0;i<10;i++)
addresses[i] = & function(){ callSomeFunction(i) };
基本上,拥有一个与数字列表相关的行为函数地址数组。
如果可以使用像Boost.Lambda这样的外部类,那就可以了。
编辑:经过一些讨论,我得出结论,我没有表达清楚。请阅读在运行时创建函数指针的函数。
我最终真正想做的是:
class X
{
void action();
}
X* objects;
for(int i=0;i<0xFFFF;i++)
addresses[i] = & function(){ objects[i]->action() };
void someFunctionUnknownAtCompileTime()
{
}
void anotherFunctionUnknowAtCompileTime()
{
}
使用汇编补丁一些在编译时未知的函数,跳转到 addresses[0] 对应的函数。
使用汇编补丁另一些在编译时未知的函数,跳转到 addresses[1] 对应的函数。
有些问题,我认为你的方法行不通,因为它们不是真正的函数,但我的解释不够清楚,没有表达我想要做什么。