gpt4 book ai didi

c++ - 在 C++03 中返回类似 `std::auto_ptr` 的集合的最佳方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 18:38:47 25 4
gpt4 key购买 nike

std::auto_ptr不允许存储在STL容器中,例如std::vector .但是,偶尔会出现需要返回多态对象集合的情况,因此无法返回对象 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 * 中,这意味着很难在调试器中查看实际存储在容器内的对象)

最佳答案

我会做的是封装一个原生堆数组。您可以定义您可以支持的 vector 接口(interface)的任何子集,而无需可复制性。

关于c++ - 在 C++03 中返回类似 `std::auto_ptr` 的集合的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4531643/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com