「Effective C++」を読んでいて、次のようなコードが例として示されていました。(具体的にはp.181の「関数ポインタを使うストラテジーパターン」の部分)
C++
1class GameCharacter; //前方宣言 2 3int defaultHealthCalc(const GameCharacter& gc); //デフォルトの健康度計算方法を表す関数 4 5class GameCharacter{ 6public: 7 typedef int (*HealthCalcFunc)(const GameCharacter&); 8 explicit GameCharacter(HealthCalcFunc hcf = defaultHealthCalc) 9 : healthFunc(hcf) 10 {} 11 int healthValue() const 12 { return healthFunc(*this) } 13 ... 14private: 15 HealthCalcFunc healthFunc; 16};
このコードの意味が分からず、いろいろと調べてみたのですが、どうしてもGameCharacterのコンストラクタでどういった処理をしているのか分からず、詰まってしまいました。また、HealthCalcFuncはGameCharacterのオブジェクトの参照を取り、int型を返す関数へのポインタという解釈でよろしいでしょうか。
このコードの意味、具体的な処理の内容をご教授願います。
回答4件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/06 05:14