我正面臨一個我不明白的錯誤。我試圖創建和使用方法指針的靜態數組。在我班上的聲明如下所示:方法指針的靜態數組
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來清除這個混亂。 –