gpt4 book ai didi

c++ - 改进的观察者设计模式 C++

转载 作者:行者123 更新时间:2023-11-30 03:01:45 25 4
gpt4 key购买 nike

假设我有一些要观察的类和一个被观察的类,我想通知观察者,但要以一种呈现的方式。

被观察的类有一个指针数组,指向被观察的类中的方法。所以基本上当我在观察类中调用 notifyObservers 时,它会遍历这个数组并简单地调用观察者中的必要函数。这个解决方案是由我的老师提出的,我很难让它发挥作用,他很遗憾这个解决方案不需要持有指向观察者的指针(如观察者设计模式)只需要指向方法的指针。但是我如何存储指向知道应该由谁调用它们的方法的指针

我试过这样的:

class A { 
public:
void method();
}
A a;
void(A::*ptr)()=&a.method;
void (*ptr)()=&a.method;

这显然行不通。甚至有办法让它发挥作用吗?

最佳答案

尝试使用绑定(bind):

std::function<void()> ptr = std::bind(&A::method, a);
ptr(); // calls a.method();

请注意,正如 betabandido 所提到的,这仅适用于 C++11 或使用 boost 的旧版本。

关于c++ - 改进的观察者设计模式 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10766241/

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