class A{
int i;
};
class B{
// sense i is changed by A
};
如果i
的值由A更改,则应通知B。有任何建议如何实现这个?
答案 0 :(得分:3)
您在寻找Observer Design Pattern吗?
答案 1 :(得分:2)
Observer pattern是实现此目标的标准方法。维基百科文章和网络上有很多指针(只是谷歌“观察者模式c ++”)。
答案 2 :(得分:2)
查看observer或发布商订阅者模式。
答案 3 :(得分:2)
您的课程需要不同的实现:
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;
}
答案 4 :(得分:1)
Observer Pattern
是您问题的主要解决方案。
您还可以使用SIGNALS
和SLOTS
。有两个主要的库来实现它们:
1)Boost
2)QT(虽然它是一个只使用SIGNAL
和SLOT
api的大型库
答案 5 :(得分:0)
C ++不提供开箱即用的功能,您必须自己编程。我想你应该阅读设计模式Observer pattern来实现这一点。