我正面臨有關函數指針語法的問題。我之前使用過這些,但是我已經讓事情變得完全不明顯了。指向STL映射中的函數的指針
因此,我正在設計一個爲遊戲創建節點的工廠。該工廠的創建方法有2個過載,如下所示:
- AbstractNode * create(AbstractNode :: TYPE)const;
- AbstractNode * create(AbstractNode :: TYPE,Vector3)const;
在工廠裏,我有一個會照顧創建過程(基於節點的類型)的私有方法在這裏是創建一個球的方法有兩種:
- 是AbstractNode * createBall ()const;
- AbstractNode * createBall(Vector3)const;
最後這裏是兩個地圖,其中我存儲所有的函數指針。這些地圖將在調用正確的方法創建(當然,如果可能的)
typedef AbstractNode* (*Functor)(void);
typedef AbstractNode* (*FunctorPosition)(Vector3);
map<unsigned int, Functor> functors_;
<unsigned int, FunctorPosition> functorsPosition_;
重定向現在,我的問題是,這將是在兩個地圖添加函數指針的語法。
這是我最後一次嘗試,它不編譯並引發以下錯誤:
functors_.insert(make_pair(AbstractNode::NAME_BALL, &createBall));
所示的錯誤:事先
No instance of function template std::make_pair matches the argument list
Argument types are (const unsigned int, <unkown-type>)
謝謝!
請注意,指向函數的指針和指向(非靜態)成員函數的指針是有區別的。請參見[parashift C++ FAQ](http://www.parashift.com/c++-faq/fnptr-vs-memfnptr-types.html) – dyp
這與「std :: map」沒有任何關係。 –