短縮版:
要点は、インスタンスの (複雑な) 状態は、クラスの定義の外にある関数によって変更できるということです。そのようなクラスは、多くの状態でクラス定義を汚染することなく、あらゆる種類の内部状態を持つように拡張できます。セッター。
次のコードを想定します。
class bar
{
virtual void ChangeState()=0;
}
class foo:bar
{
private:
int b;
public:
void ChangeState() {b=3;}
}
私がやりたいのは、さまざまな関数を作成し、実行時にそれらを関数に渡すことです。
foo.ChangeState(); //b is 3 now
void foo::(?)ChangeState2(){ b=2; };
foo.ChangeState=ChangeState2;
foo.ChangeState(); //b is 2 now
ハックを使用せずに、そのような構造を C++ で実装できますか?