C++类中的函数指针表

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).

此外,发布错误时,请确保包含发生错误的行.