我正在使用 ptr_map 来存储不同类型的指针。
boost::ptr_map<string, any> someMap;
我在那里存储了一些模板化的类对象:
someMap.insert("1", new SomeClass<int>());
someMap.insert("2", new SomeClass<float>());
现在我想从地图中获取值。这是一个带有参考的示例:
template<typename T>
T &get(const string &someKey)
{
try
{
return any_cast<EventType&>(mSignalAssociation.at(signalName));
} catch(bad_any_cast &e)
{
// Logging here
}
}
get< SomeClass<int> >("1"); // This works
但我不喜欢引用,因为我不能返回,例如,如果转换错误或对象不存在,则返回 NULL。
如何从该地图中获取指针?
T *get(const string &someKey)
{
return any_cast<EventType*>(mSignalAssociation.at(signalName));
}
这构建但在铸造时失败,为什么?