1

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

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

我试过这样的事情:

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

这显然没有用。有没有办法让它工作?

4

2 回答 2

3

尝试使用绑定:

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

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

于 2012-05-26T12:37:17.447 回答
0

以防万一有人还在看这个。有一篇很好的博客文章正是这样做的。

http://juanchopanzacpp.wordpress.com/2013/02/24/simple-observer-pattern-implementation-c11/

如果您不使用 C++11,则可以使用 boost::bind 和 boost::function 来完成这项工作。

于 2013-05-24T01:57:44.207 回答