2017-05-19 26 views
0

我試圖創建一個將從一般成員調用一般函數的表。我試圖製作一個熱鍵表,所以當它識別某個鍵被按下時,它會調用特定對象上的特定功能。用不同的成員創建一個「調用函數」表

我已經創建了一個對象(hotKeyCommand),它存儲了一個指向void函數的指針,以及一個用於調用函數的對象指針的模板。然後,我有一個地圖,看起來像這樣:

//hotKeyCommand.cpp 
template<class callObjectPointer> class hotKeyCommand 
{ 
... 
typedef void(*hotKeyFunc)(); 
hotKeyFunc commandFunction; 
callObjectPointer objectToCall; 

//hotKeyConfig.cpp 
std::map<unsigned int, hotKeyCommand> hotKeyList; 

我不知道如何與hotKeyList變量接口來做到這一點。理想情況下,我可以調用hotKeyList [someID] .execute(),它會執行適當的對象的函數,但我遇到了很多的語法錯誤,沒有給hotKeyList一個模板,使用哪些對象。

任何幫助,將不勝感激! 謝謝!

回答

0

由於hotKeyCommand是一個模板類,你需要在聲明hotKeyList提供模板參數:

std::map<unsigned int, hotKeyCommand<float>> hotKeyList; 

然後,你可以調用該函數爲:

hotKeyList[someKey].commandFunction(); 

注意你的函數沒有按沒有任何參數,並且它不是成員函數,所以它不能訪問相應的hotKeyList[someKey].objectToCall成員。

相關問題