4

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

我是否只需要咬紧牙关,让我的方法const_cast<Foo*>在插入项目时包装对此的访问,还是我在这里遗漏了什么?有没有办法存储指向 const 对象(const Foo*)的指针?

4

1 回答 1

0

看起来这是不可能的。

一种解决方法是包装对ptr_unordered_map. insert 方法应该采用 const auto_ptr 然后执行 aconst_cast<Foo*>来插入它。

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

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

于 2011-05-11T13:06:53.863 回答