我使用 ptr_map 来存储不同类型的指针。
boost::ptr_map<string, any> someMap;
我在那里存储了一些模板类对象:
someMap.insert("1", new SomeClass<int>());
someMap.insert("2", new SomeClass<float>());
现在我想从 map 中获取值。这是一个带有引用的示例:
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。
我如何从这张 map 中获取指针?
T *get(const string &someKey)
{
return any_cast<EventType*>(mSignalAssociation.at(signalName));
}
此构建但在转换时失败,为什么?
最佳答案
这个怎么样:
T *get(const string &someKey)
{
return &any_cast<EventType&>(mSignalAssociation.at(signalName));
}
(只是猜测)
关于c++ - 类型转换指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3132424/