我有以下结构
typedef struct s_ins
{
std::string item;
int extended;
void (CPU::*fc)(std::list<std::string> &list>;
} t_ins;
然后我声明一个数组,我的令牌需要在一个函数中重定向
t_ins g_ins[] =
{
{"push", 1, &CPU::ins_push},
{"pop", 0, &CPU::ins_pop},
{"dump", 0, &CPU::ins_dump},
{"assert", 1, &CPU::ins_assert},
{"add", 0, &CPU::ins_add},
{"sub", 0, &CPU::ins_sub},
{"mul", 0, &CPU::ins_mul},
{"div", 0, &CPU::ins_div},
{"mod", 0, &CPU::ins_mod},
{"print", 0, &CPU::ins_print},
{"exit", 0, &CPU::ins_exit},
{"", 0, 0}
};
最后这就是我所说的(在 CPU 函数成员中):
(*g_ins[i].fc)(tokens);
我得到的是:
cpu.cpp: In member function ‘void CPU::get_instruction(std::list<std::basic_string<char> >&)’:
cpu.cpp:40:16: error: invalid use of unary ‘*’ on pointer to member
我尝试了许多其他方式来调用它,但我仍然有一些错误。我是这样想的:我用 g_ins[i].fc 访问我的函数,告诉他这是一个带 * 的函数成员指针,然后传递我的参数。我在函数成员指针的同一类的函数中使用它,所以我不需要之前有一个对象,因为它是'this'对吗?
谢谢