use*_*022 8 c++ member-function-pointers function-pointers
我正在尝试在类中创建一个函数指针表.我无法在网上找到任何这样的例子,大多数都涉及在他们班级之外使用成员函数指针.
例如:
class Test
{
typedef void (Test::*FunctionType)();
FunctionType table[0x100];
void TestFunc()
{
}
void FillTable()
{
for(int i = 0; i < 0x100; i++)
table[i] = &Test::TestFunc;
}
void Execute(int which)
{
table[which]();
}
}test;
Run Code Online (Sandbox Code Playgroud)
给我错误"术语不评估为采用0参数的函数".
Set*_*gie 19
在这一行中的Execute功能:
table[which]();
Run Code Online (Sandbox Code Playgroud)
你不能这样称呼它,因为它不是正常的功能.你必须为它提供一个操作对象,因为它是一个指向成员函数的指针,而不是指向函数的指针(有区别):
(this->*table[which])();
Run Code Online (Sandbox Code Playgroud)
这将使调用对象成为this指针指向的对象(正在执行的对象Execute).
此外,发布错误时,请确保包含发生错误的行.