1

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

rs_opCodes[cur_block]();

rs_opCodes 定义如下:

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

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

4

3 回答 3

4

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

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

然而,这整个想法对我来说没有多大意义。您正在编写要在对象中调用的方法指针数组...起初我想不出这种类型代码的可用示例...

于 2010-10-29T11:00:56.000 回答
2

您定义rs_opCode为指向(类rsInterpreter)成员函数的指针。要调用这样的野兽,您需要语法

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

或者

(pointer->*rs_opCodes[curr_block])();
于 2010-10-29T11:04:29.207 回答
0

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

于 2010-10-29T10:59:21.790 回答