在我正在编写的一些代码中,我有以下行,这给了我错误 C2064:
rs_opCodes[cur_block]();
rs_opCodes 定义如下:
typedef void (rsInterpreter::*rs_opCode)();
rs_opCode rs_opCodes[NUM_OPCODES];
有谁知道为什么我收到错误 C2064?
在我正在编写的一些代码中,我有以下行,这给了我错误 C2064:
rs_opCodes[cur_block]();
rs_opCodes 定义如下:
typedef void (rsInterpreter::*rs_opCode)();
rs_opCode rs_opCodes[NUM_OPCODES];
有谁知道为什么我收到错误 C2064?
您必须使用方法指针调用的语法,但您需要一个对象来进行实际调用。请注意,typedef 确定您正在定义指向 rsInterpreter 类型对象的方法的指针,因此您需要该类型的对象:
rsInterpreter r;
(r.*rs_opCodes[cur_block])();
然而,这整个想法对我来说没有多大意义。您正在编写要在对象中调用的方法指针数组...起初我想不出这种类型代码的可用示例...
您定义rs_opCode
为指向(类rsInterpreter
)成员函数的指针。要调用这样的野兽,您需要语法
(object.*rs_opCodes[cur_block])();
或者
(pointer->*rs_opCodes[curr_block])();
您定义rs_opCode
为方法指针,但您将其用作函数指针。