1

那里的专业人士,

这是我第一次真正向这个委员会发布一个过去对我有很大帮助的问题。我仍然是一个编程新手,在过去的几个月里一直在努力学习很多关于编程和软件开发的知识。

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

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

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

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

非常感谢

编码器安迪

4

1 回答 1

7

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

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

于 2013-07-15T07:56:55.647 回答