首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无燃料电池的CPtrArray (对STL或Boost)

无燃料电池的CPtrArray (对STL或Boost)
EN

Stack Overflow用户
提问于 2011-08-22 07:09:38
回答 2查看 1.5K关注 0票数 1

我想离开MFC,我怎样才能取代CPtrArray

也许我可以用 to类似的vector<void *>

有什么更好的方法来保存这个类的全部功能呢?

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-22 07:14:21

不需要自己写,你可以用boost::ptr_array代替。它使用底层的std::vector<void*>来存储指针。

票数 1
EN

Stack Overflow用户

发布于 2011-08-22 08:09:23

首先,您不应该使用CPtrArray。在VisualC++支持模板之前,它是一个危险的老类,只能非常谨慎地使用。它的问题是它存储指针(任何指针!)作为void*,这意味着当您将指针从数组中拿回来时,您就没有,也没有任何的类型信息。如果您的代码严重依赖于此,那么您就面临着滥用对象和严重内存泄漏的风险(例如,未能调用析构函数)。

boost::ptr_array不是CPtrArray的直接替代品,它是一个正确的模板类型敏感类:它最接近的MFC等效值将是CArray<T>。它使用void*来处理指针这一事实(本质上)是一个实现细节,与直接使用vector<void*>完全不同。

(如果你知道CPtrArray的所有问题,那么我很抱歉对唱诗班说教,但我认为任何关于CPtrArray的问题都需要附加警告。)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7144149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档