08/06/17 02:48:32 sJZvekW7
パターンデザイン的には3だよね。
いわゆるストラテジパターンというやつ。
あとはメンバ関数へのポインタを使って入れ替えるとかね。
class Hoge {
private:
// メンバ関数型を定義
typedef void (Hoge::*ACTION_PTR)(void);
// メンバ関数へのポインタを格納する変数
ACTION_PTR action;
public:
// 行動のセット
void action1(void) {}
void action2(void) {}
void action3(void) {}
// コンストラクタで初期値を設定
Hoge() { action = &Hoge::action1; }
// 同様の構文でメンバ関数を変更可能
//ポインタを通してメンバ関数起動
void update(void) { (this->*action)(); }
};