当前位置:  开发笔记 > 编程语言 > 正文

在库接口中提供对weak_ptr的访问是否明智?

如何解决《在库接口中提供对weak_ptr的访问是否明智?》经验,为你挑选了1个好方法。

我编写了一个库,它公开了对几个相关对象类型的引用.所有这些对象的生命周期都由库内部管理boost::shared_ptr

根据库的性质,库的用户还能够知道任何暴露对象的寿命.因此,他们可以存储指针或保持对这些对象的引用.他们这样做是合理的,并知道这些对象何时不再有效.

但我感到内疚,迫使我的用户合理.

让库暴露weak_ptr给它的对象是否可以接受?还有其他图书馆吗?

我已经在应用程序中描述了这个库的用法,并且发现它对于完全暴露而言过于关键任务weak_ptr.

让匹配的API函数暴露引用 weak_ptr或使任何对象能够暴露weak_ptr自身是否更明智?



1> Head Geek..:

如果smart_ptrs已经可以直接访问库的用户,那么他们已经可以访问weak_ptrs,只需通过相应weak_ptr的构造函数即可.但如果smart_ptrs都是图书馆的内部,那就是另一回事了.

在这种情况下,weak_ptr除了您的图书馆提供的任何其他访问之外,我还建议让每个对象传递给自己.这为用户提供了最大的灵活性:如果他们需要weak_ptr,他们可以立即访问它; 如果他们需要shared_ptr,他们可以很容易地得到它; 如果他们只需要访问对象本身,他们可以完全忽略智能指针.

当然,我不知道你的库是做什么的,或者它是如何使用或设计的.这可能会改变我的建议.

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有