我面临一个关于函数指针语法的问题。我以前用过这些,但我的情况让事情变得完全不明显了。
所以,我正在设计一个为游戏创建节点的工厂。工厂的 create 方法有 2 个重载,如下所示:
- AbstractNode* create(AbstractNode::TYPE) 常量;
- AbstractNode* create(AbstractNode::TYPE, Vector3) const;
在工厂中,我有私有方法来处理创建过程(基于节点的类型),这是创建球的两种方法:
- AbstractNode* createBall() 常量;
- 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>)
提前致谢!