c++ - 类型转换指针

标签 c++ pointers boost reference boost-any

我使用 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/

相关文章:

c++ - 在 main 之前调试对全局变量的赋值

c++ - 片段中指针的模糊行为

c - C 中以 NULL 结尾的结构类型数组

c++ - boost asio udp async_read_from buffersize

c++ - Boost序列化基类

c++ - CURLOPT_POSTFIELDS 以奇怪的编码发送数据?

c++ - 为什么以下两个程序会产生不同的输出? (C++,位操作,VS 2012)

时间:2019-03-17 标签:c++segfault: char pointers

c++ - 有没有可能不继承自 boost::operators,但仍然使用它?

c++ - 在 Microsoft Visual Studio 2013 C++ 上使用 GNU 库 (getopt) 无法解析的外部符号