gpt4 book ai didi

c++ - 在一些容器中处理一个对象

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

我想在某些(两个或更多)容器中存储指向某个对象的一个​​实例的指针。我在这个想法中遇到了一个问题:我如何处理这个对象的删除。对象的生活相当 Storm (我说的是游戏,但我认为这种情况并不那么具体)并且可以经常被移除。在我看来这个问题分为两个问题

1. 我应该如何向容器发送有关删除的信号?在 C# 中,我曾经在存储的对象中创建 bool 属性 IsDead,因此主循环的每次迭代首先会找到“死”对象并将其删除。没有循环引用,一切都很清楚 :-) 这种技术是否正确?

2。 即使我在 C++ 中实现此技术,如果此对象位于某些容器中,我也会遇到调用析构函数的困难。即使我创建了某种字段“IsDead”并从所有列表中删除死对象,我也必须释放内存。
阅读一些文章后,我有一个想法,我应该有一个“主”容器,其中包含所有对象的 shared_ptr,而其他容器应该将 weak_ptr 存储到它们,因此只有主容器检查对象的状态,而其他容器只查看 shared_ptr。我的意图是正确的还是有其他解决方案?

最佳答案

听起来您正在寻找 shared_ptr<T> .

这是 C++ 中的引用计数 ptr,可以轻松共享对象。 shared_ptr<T>可以自由地分发给几个对象。作为shared_ptr实例被复制并销毁,内部引用计数器将被适当更新。删除所有引用后,基础数据将被删除。

关于c++ - 在一些容器中处理一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3844889/

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