class A{
int i;
};
class B{
// sense i is changed by A
};
の値がi
A によって変更された場合、B は通知を受け取る必要があります。これを実装する方法について何か提案はありますか?
オブザーバーデザインパターンをお探しですか?
オブザーバーパターンは、これを実装するための標準的な方法です。ウィキペディアの記事やWeb(グーグルの「オブザーバーパターン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 ++は、この機能をそのままでは提供していません。自分でプログラムする必要があります。これを実現するには、デザインパターンオブザーバーパターンを読み取る必要があると思います。