1
class A{
  int i;
};

class B{
  // sense i is changed by A    
};

如果 的值i被 A 更改,则 B 应该得到通知。有什么建议如何实施吗?

4

6 回答 6

2

您在寻找观察者设计模式吗?

于 2012-05-25T12:09:58.757 回答
1

观察者模式是实现这一点的标准方式。维基百科文章和网络上有很多指针(只是谷歌“观察者模式 c++”)。

于 2012-05-25T12:10:04.830 回答
1

查看观察者或发布者-订阅者模式。

于 2012-05-25T12:11:10.350 回答
1

Observer Pattern是您问题的主要解决方案。

您也可以使用SIGNALSSLOTS。有两个主要的库实现它们:

1)提升

2)QTSIGNAL (虽然它是一个只使用和SLOTapi的大型库)

于 2012-05-25T12:13:44.240 回答
1

您的类需要不同的实现:

class B {

public:
  Alert(int value_changed) {
     // implement whatever you want
     // for example printf("Value has changed to %i class A!!!\n", value_changed);
       }

}


class A {
/* constructor implementation */
 A(int i) {
           internal_value = i;
           B_class = new B() //notice that B will automatically be created by A!
          }

~A() { delete B_class; }

public:

 ChangeValue(int new_value) {
           internal_value = new_value;
           B_class.Alert(internal_value);
           }

private:

int internal_value;
B *B_class;

}

int main() {

A my_A(10); // you implicitly create a pair of classes A - B;

my_A.ChangeValue(20); // you should notice that A calls B automatically

return 0;
}
于 2012-05-25T13:13:49.183 回答
0

C++ 不提供开箱即用的此功能,您必须自己编程。我想你应该阅读设计模式观察者模式来实现这一点。

于 2012-05-25T12:10:13.300 回答