Bil*_*eal 7 c++ collections memory-management auto-ptr c++03
std::auto_ptr不允许存储在STL容器中,例如std::vector.但是,偶尔会出现需要返回多态对象集合的情况,因此我无法返回对象向量(由于切片问题).我可以使用std::tr1::shared_ptr并坚持使用vector,但是我必须付出高昂的代价来维护单独的引用计数,并且拥有实际内存(容器)的对象不再在逻辑上"拥有"对象,因为它们可以被复制出来它不考虑所有权.
C++ 0x以这种形式为这个问题提供了一个完美的解决方案std::vector<std::unique_ptr<t>>,但是我无法访问C++ 0x.
其他一些说明:
boost::ptr_container容器(即boost::ptr_vector),但我想避免这种情况,因为它打破了调试器(内部存储在void *s中,这意味着很难在调试器中查看实际存储在容器内的对象)| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |