是否有一个简单、高效的弱/保护指针?我需要多个指向同一个对象的指针,这些指针在删除对象时都自动设置为 NULL。有一个“主”指针始终用于删除对象,但可以有几个其他指针引用同一个对象。
以下是一些不太符合我需求的解决方案:
- QPointer:我不是在开发 QT 应用程序;我不希望包含来自 QObject 的这个库/派生。
- boost::weak_ptr:
访问已释放对象时抛出异常。对我的情况来说太贵了:测试弱指针应该是正常的;当弱指针不再有效时,我计划进行一些手动清理。update :weak_ptr 可以在不抛出异常的情况下进行测试 - 低开销弱指针:这与我正在寻找的非常接近,除了我不喜欢这样一个事实“这个方案只有在你不分配 2**sizeof(int) 次的情况下才能保证工作”同一个位置。”
为什么我需要这些弱/受保护的指针: 我有一个带有游戏对象列表的游戏。一些对象依赖于其他对象,例如与游戏实体关联的调试/统计对象。调试/状态对象显示有关游戏实体的有用信息,但它仅在游戏实体存在时才有意义。所以如果游戏实体被删除,调试/统计对象应该意识到这一点并删除自己。(另一个想法是跟踪导弹:它可能会搜索新目标,而不是自我删除。)
我希望将调试/统计逻辑与游戏实体分开。游戏实体不必知道附加了调试/统计对象。虽然我更喜欢弱/受保护的指针的答案,但我也欢迎以不同的方式来处理我的特定任务。我在想我可能必须实现一个游戏对象管理器来跟踪对象生命周期并使用句柄而不是指向内存地址的原始指针。
我正在用 C++ 开发。