我似乎做不到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/