使用智能指针的C ++中的“观察者模式”?

Cod*_*ndi 0 c++ design-patterns shared-ptr weak-ptr

专业人士在那里

这是我第一次向董事会发布问题,这在过去对我有很大帮助。我仍然是编程新手,并且在过去的几个月里一直在尝试学习有关编程和软件开发的很多知识。

我最近解决了“ c ++ 11-Smart Pointers”主题,并决定重写几周前学到的所有设计模式,包括使用shared_ptr和weak_ptr进行资源管理的“观察者模式”。

当我尝试编写观察者模式的简单实现时(例如在Head First的设计模式或E.Gamma的设计模式中),同时为可观察的主题和观察者使用接口类,并且为每个观察者分别使用一个具体的类,我收到了来自Visual Studio的各种错误消息。我只是不了解如何在此模式下组合shared_ptr和weak_ptr,这可能是由于我仍然不完全了解两者的组合。

不幸的是,即使是在Internet上进行彻底的搜索也没有给我提供一个简单的“使用智能指针的观察者模式”示例,它可以为我提供指导。

因此,我想知道,你们中的一个人是否会知道在哪里可以找到这种简单的实现方式,或者愿意为我提供自己的一个。两者都将非常有帮助:-)

非常感谢

编码器

Jam*_*nze 5

观察者模式是智能指针(至少是通常的候选对象)不合适的情况的典型示例。主体和客体都不是彼此“拥有”的。每个人都有自己的寿命。实际上,观察者模式的一种频繁使用是当一个对象具有指向它不拥有的另一个对象的指针时。它注册为观察者,以便在观察对象被破坏时得到通知。

对我来说,听起来像是您在反击整个事情。您有一个解决方案(智能指针),并且您正在尝试使每个问题都适合它。那永远都行不通。