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 中,这意味着很难在调试器中查看实际存储在容器内的对象)