我正面临有关函数指针语法的问题。我之前使用过这些,但是我已经让事情变得完全不明显了。指向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”没有任何关系。 –