错误C2064:term不计算为采用0参数的函数

时间:2010-10-29 10:55:29

标签: c++ function-pointers member-function-pointers

在我写的一些代码中,我有以下行,它给出了错误C2064:

rs_opCodes[cur_block]();

rs_opCodes定义如下:

typedef void (rsInterpreter::*rs_opCode)();
rs_opCode rs_opCodes[NUM_OPCODES];

有谁知道为什么我收到错误C2064?

3 个答案:

答案 0 :(得分:4)

您必须使用方法指针调用的语法,但您需要一个实际调用的对象。请注意,typedef会确定您正在定义指向rsInterpreter类型的对象方法的指针,因此您需要一个该类型的对象:

rsInterpreter r;
(r.*rs_opCodes[cur_block])();

然而,对此我的整个想法并没有多大意义。你正在编写一个方法指针数组,以便在对象中调用...我一开始认为,我不能想到这类代码的可用示例...

答案 1 :(得分:2)

您将rs_opCode定义为指向成员函数(类rsInterpreter)的指针。 要召唤这样的野兽,你需要sytax

(object.*rs_opCodes[cur_block])();

(pointer->*rs_opCodes[curr_block])();

答案 2 :(得分:0)

您将rs_opCode定义为方法指针,但您将其用作函数指针。