c++ - 在 boost::ptr_unordered_map 中存储指向 const 对象的指针

标签 c++ boost-ptr-container

我似乎做不到boost::ptr_unordered_map<uint32_t, const Foo>工作 - 底层实现看起来像是将东西转换为 void* .

我是否只需要硬着头皮让我的方法包装对此的访问做一个 const_cast<Foo*>插入项目时,或者我在这里遗漏了什么?有什么方法可以存储指向 const 对象的指针 ( const Foo* )?

最佳答案

看起来这是不可能的。

解决方法是包装对 ptr_unordered_map 的访问.插入方法应该采用 const auto_ptr 然后执行 const_cast<Foo*>插入它。

如果您在删除元素时将 auto_type 交还给客户端代码,则需要从中解压指针并将其传输到 const auto_ptr 或类似的,以在不泄漏非 const 引用的情况下显式所有权转移。

这对我的用例来说已经足够了,因为我不需要公开任何迭代器行为 - 它是纯单元素插入/释放/查找。

关于c++ - 在 boost::ptr_unordered_map 中存储指向 const 对象的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5963706/

相关文章:

C++ 帮助 boost::ptr_map/boost::checked_delete 失败

c++ - 当我知道我插入的指针时,如何从 boost::ptr_set 中删除?

c++ - 如何安全地填充 Boosts 的指针容器?

c++ - 从 .txt 文件加载 C++ 源代码

c++ - 在带有变量包含参数的 makefile 中添加 Windows 路径

c++ - cudaOccupancyMaxPotentialBlockSizeVariableSMem 一元函数

c++ - SFML 2.0 循环 Sprite 显示不止一次

c++ - 克隆分配器和 boost::ptr_container 中的多态性

c++ - ptr_vector 未正确释放

c++ - 为什么 Bison 中的简单语法规则不起作用?