我有这个typedef来定义一个函数指针。
typedef Script*(*CreateObjectFn)(TiXmlElement* node);
我为我的目的创建了一个通用容器,就像地图一样。它叫做Dictionary,所以我在类这样的类中创建了一个CreateObjectFn的Dictionary:
class ScriptBank
{
public:
~ScriptBank();
static Dictionary<CreateObjectFn>& getInstance()
{
static Dictionary<CreateObjectFn>& registry = m_registry;
return registry;
}
private:
static Dictionary<CreateObjectFn> m_registry;
ScriptBank();
};
我有各种类型的脚本所以在这个词典中我想放在派生脚本的某个函数内。
现在来自模板类:
template <class T>
class Register
{
public:
Register()
{
ScriptBank::getInstance().insert("Some string", T::create);
}
~Register()
{
}
};
在派生脚本中,我有类似的内容:
static Script* create(TiXmlElement* node);
static Register<DoorChStateScript> m_Registry;
我的目的是在编译时插入函数指针,但编译器似乎无法识别正确的类型。
在Register类中,我收到此错误:cannot convert parameter 2 from 'Script *(TiXmlElement *)' to 'CreateObjectFn *'
有什么想法吗?