gpt4 book ai didi

c++ - 同一容器中的共享指针和原始指针

转载 作者:搜寻专家 更新时间:2023-10-31 00:39:23 25 4
gpt4 key购买 nike

我需要同时使用共享指针和原始指针填充容器。

我猜 shared_ptr<T>可能被迫表现得像T* ,如果用无操作删除器和无操作(去)分配器构造?

或者可能存在绑定(bind)到不同(智能和原始)指针类型的通用智能指针?

或者可能是shared_ptr可以指向一个对象,但管理相同类型的另一个 (nullptr) 对象的生命周期?

背景。我有简单的组件系统。有些组件是内置的,不需要管理,原始指针就足够了。其他组件是外部 DLL,它们必须在请求时附加,在从“ session ”中移除时分离。对于后者,我使用包装器组件,它会在销毁时分离 DLL。

编辑:背景已更新。
EDIT2:问题已更新。
EDIT3:找到直接解决方案。有兴趣的可以看看我的回答。

最佳答案

一般来说,没有;一个容器只包含一种类型的对象。

你可以使用某种 boost::variant<shared_ptr<T>, T*>对象作为包含的对象。但是您需要访问者访问它的元素。或者,您可以提供 boost::shared_ptr一个特殊的删除器对象,实际上并不删除指向的值。

关于c++ - 同一容器中的共享指针和原始指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16239517/

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