現在我有一個客戶端,它向我的服務器發送一個命令列表,它需要數據。我的服務器經由使用GetProcAddress的一個DLL加載這些命令,例如:回調設計模式
InitializeDLL initializeDLL = (InitializeDLL)GetProcAddress(hInstanceLibrary, "InitializeDLL");
其中initiailizeDLL定義爲:
typedef int (CALLBACK* InitializeDLL)(int,int);
客戶端現在發送命令名稱作爲其想要數據的字符串對於。我有很多我希望能夠使用的命令列表,但我不知道如何以有效的方式實現這些命令。我正在考慮創建一個Map,並將該名稱的字符串用作鍵,然後將CALLBACK *用作適當的函數作爲指針。但之後我也必須拋出它。我主要是Java程序員,而不是最好的C++程序員,所以我不確定這個Map想法是否會工作,或者最終如何處理演員。另外,我查看了維基百科上的命令模式,但不知道在這種情況下如何實現。
使用'map <>'似乎不是一個壞主意。給它一個去,如果你遇到問題,你可以回來問不同的問題。關於STL容器的好處在於,只要你輸入「容器」,就可以輕鬆地將其換成另一個容器。 – jxh
所有函數指針是否具有相同的特徵? – Brady
大多數函數指針是相似的,雖然一對返回double而不是int,參數的數量可能會有所不同。 –