我正面临一个我不明白的错误。我试图创建和使用方法指针的静态数组。在我班上的声明如下所示:方法指针的静态数组
static void (Client::*packetHandler[Op::handledOpcodeMax - Op::handledOpcodeMin + 1])(QByteArray &data);
初始化发生在我的.cpp文件是这样的:
void (Client::*packetHandler[Op::handledOpcodeMax - Op::handledOpcodeMin + 1])(QByteArray &data);
这里说到的烦恼,在我的客户的类中的方法之一,我试着使用这个方法指针的数组。 我试过多种方法,例如:
(this->*packetHandler[_opcode])(data);
我说我不明白的问题,让我来解释为什么。在我的代码上运行make会导致正确的编译,如果连接的话会出现问题。
client.cpp:71: undefined reference to `Client::packetHandler'
该消息重复5次。
任何帮助将受到欢迎。 谢谢。
静态属于您的翻译单元。也许出口将是有序的。 –
它会太令人讨厌,告诉你使用boost :: function来代替吗? –
我会强烈建议一些typedefs来清除这个混乱。 –