7

std::auto_ptr不允许存储在 STL 容器中,例如std::vector. 但是,有时我需要返回多态对象的集合,因此我无法返回对象向量(由于切片问题)。我可以使用std::tr1::shared_ptr并将vector它们粘贴在 .它不考虑所有权。

C++0x 以 的形式为这个问题提供了完美的解决方案std::vector<std::unique_ptr<t>>,但我无法访问 C++0x。

其他一些注意事项:

  • 我无权访问 C++0x,但我有 TR1 可用。
  • 我想避免使用 Boost (尽管如果没有其他选项可以使用)
  • 我知道boost::ptr_container容器(即boost::ptr_vector),但我想避免这种情况,因为它会破坏调试器(内部存储在void *s 中,这意味着很难在调试器中查看实际存储在容器内的对象)
4

1 回答 1

3

我要做的是封装一个本机堆数组。您可以定义您可以支持的向量接口的任何子集,而无需可复制性。

于 2010-12-25T20:58:02.017 回答