gpt4 book ai didi

c++ - 在库接口(interface)中提供对 weak_ptr 的访问是否明智?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:00 25 4
gpt4 key购买 nike

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

根据库的性质,库的用户还可以知道任何公开对象的生命周期。所以他们可以存储指针或保留对这些对象的引用。他们这样做并知道这些对象何时不再有效是合理的。

但我对强制我的用户讲道理感到内疚。

公开库是否可以接受 weak_ptr的对象?其他图书馆有这样做吗?

我已经分析了这个库在应用程序中的使用情况,发现它对任务至关重要,无法公开 weak_ptr独家。

让匹配的 API 函数公开一个引用一个 weak_ptr 或使任何对象能够公开一个 weak_ptr 是否更明智?对自己?

最佳答案

如果库的用户已经可以直接访问 smart_ptr,那么他们已经可以访问 weak_ptr,只需通过相应的 weak_ptr 的构造函数。但如果 smart_ptr 都在库内部,那就另当别论了。

在这种情况下,我建议让每个对象将 weak_ptr 传递给自己,以及您的库提供的任何其他访问权限。这为用户提供了最大的灵 active :如果他们需要一个 weak_ptr,他们可以立即访问它;如果他们需要一个shared_ptr,他们可以很容易地得到它;如果他们只需要访问对象本身,他们可以完全忽略智能指针。

当然,我不知道你的图书馆是做什么的,也不知道它是如何使用或设计的。这可能会改变我的建议。

关于c++ - 在库接口(interface)中提供对 weak_ptr 的访问是否明智?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/631380/

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