在我写的一些代码中,我有以下行,它给出了错误C2064:
rs_opCodes[cur_block]();
rs_opCodes定义如下:
typedef void (rsInterpreter::*rs_opCode)();
rs_opCode rs_opCodes[NUM_OPCODES];
有谁知道为什么我收到错误C2064?
答案 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
定义为方法指针,但您将其用作函数指针。