class A{
int i;
};
class B{
// sense i is changed by A
};
如果 的值i
被 A 更改,则 B 应该得到通知。有什么建议如何实施吗?
您在寻找观察者设计模式吗?
观察者模式是实现这一点的标准方式。维基百科文章和网络上有很多指针(只是谷歌“观察者模式 c++”)。
查看观察者或发布者-订阅者模式。
您的类需要不同的实现:
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;
}
C++ 不提供开箱即用的此功能,您必须自己编程。我想你应该阅读设计模式观察者模式来实现这一点。