Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 基于std::map和boost::any:转换错误的数据存储库_C++_Boost_Stl - Fatal编程技术网

C++ 基于std::map和boost::any:转换错误的数据存储库

C++ 基于std::map和boost::any:转换错误的数据存储库,c++,boost,stl,C++,Boost,Stl,我正在尝试实现一个方便的数据存储库或 我的一个小程序的知识库。 我使用boost::any的std::map来保存不同的 信息为了调试和安全起见,我 数据的额外安全访问器getVal 一个片段说了一千多个字: 编辑:> 当我把某物储存在里面,然后尝试 编辑:正如上面更新的示例代码所示,它不需要是指针! 它抱怨的东西*=kb->getVal: boost::异常\u详细信息::克隆\u impl>' 什么:boost::bad_any_cast:使用boost::any_cast转换失败 如果我使

我正在尝试实现一个方便的数据存储库或 我的一个小程序的知识库。 我使用boost::any的std::map来保存不同的 信息为了调试和安全起见,我 数据的额外安全访问器getVal

一个片段说了一千多个字:

编辑:>

当我把某物储存在里面,然后尝试 编辑:正如上面更新的示例代码所示,它不需要是指针! 它抱怨的东西*=kb->getVal: boost::异常\u详细信息::克隆\u impl>' 什么:boost::bad_any_cast:使用boost::any_cast转换失败

如果我使用KnowledgeBase::operator[]它会工作。
你能告诉我怎么了吗?

哦,简短的、清晰的、感叹词,{!}

我完全忘记迭代器指向std::pair! 我真丢脸

对不起打扰了

getVal的正确最后一行是:

        return boost::any_cast<T>(iter->second);
    }

无论如何,Thx。

您应该添加实际给出错误的代码。编写一个包含元素的简单测试,并尝试使用getVal模板提取它,然后发布代码和错误。还请注意,不建议从STL或任何其他不打算扩展的类派生。另外,您的getVal可能应该是const。通常,标准库容器并不打算从中派生。我将代码更改为可以复制粘贴并运行以试用的代码。代码不起作用的原因我仍然不明白。如果这行得通的话,对我会有很大的帮助。Thx给每个在这方面投资大脑周期的人
        return boost::any_cast<T>(iter->second);
    }