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 *中,这意味着很难查看实际存储在调试器容器中的对象)H 214F 215发布于 2010-12-25 20:58:02
我要做的是封装一个本机堆数组。您可以定义您可以支持的向量接口的任何子集,而无需可复制性。
https://stackoverflow.com/questions/4531643
复制相似问题