大家好我正在尝试使用以下设置创建一个类的实例:
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*
之间进行转换。如何实现此转换(静态,动态转换不起作用)
作为对此的后续问题,是否有人有任何想法如何使非空构造函数的工作?
答案 0 :(得分:4)
要调用该函数,请添加括号:
temp = itor->second();