std ::函数实例创建

时间:2014-10-16 20:08:06

标签: c++ c++11

大家好我正在尝试使用以下设置创建一个类的实例:

class Interface
{
      Interface(){}
      virtual void init =0;
};

class InstanceCreation
{

void registerInstance(const std::string& name, std::function<Interface*(void)> interface )
{
functionMap[name] = interface 
}


Interface* getInstance(const std::string& name)
{
 Interface* temp;
 auto itor = functionMap.find(name);
 temp = itor->second;

 return temp;
}

std::map<std::string, std::function<Interface*(void)> > functionMap;

};

由于以下行而无法编译:

  temp = itor->second;

错误描述未能在std::function<Interface*(void)>Instance*之间进行转换。如何实现此转换(静态,动态转换不起作用)

作为对此的后续问题,是否有人有任何想法如何使非空构造函数的工作?

1 个答案:

答案 0 :(得分:4)

要调用该函数,请添加括号:

temp = itor->second();