意味はわかります。が、使いこなせてません。
いや、意味がわかってないから使えないのです。
私の師匠ともいえる龍神録プログラミングの館のソースを確認すると
void (*enemy_pattern[ENEMY_PATTERN_MAX])(int) = {enemy_pattern0, enemy_pattern1,};
これで宣言していました。
似たようにやってみたのですが失敗。
結果的に
void (EnemyAct::*enemyptn[ENEMYPTN_MAX])(st_enemy *) ={&EnemyAct::enemyptn0,&EnemyAct::enemyptn1};
これで動いています。たしか。最近触れてないのであやしいけど。
なぜ{}の中に&があると動くのか。
現在2パターンしかないから動いているのか。
これが3パターンになったら動かないのかもしれません。
呼び出す場所も不安なところにあるので、将来的に恐ろしいことになるのかもしれません。
なぜこうなったかというと、トライアルアンドエラーです。トライアンドエラー?
まぁ、それです。F5押しまくりです。
*,&,(),[]
いろんなものをつけたり消したりくくったり。
書く場所も関数の中に入れたり、外に出したり。
正直気持ち悪いです。だって理解できてないのだもん。
たくさんぐぐりましたともさ。
でも、こう、シンプルな例がほとんどで結局よくわかりません。
たぶん、たぶん理解できてないのは、関数ポインタ というより ポインタ だとは思いますが、が。
応用ばかりに目が行って、基礎が疎かだからこんなことになるのだけども!
もし次自分で新しいゲームを作るとしたときに使えるかといわれたら使えないことでしょう。
だがしかし、こうやって日記として投稿したことでうっすらと記憶できたので使おうと努力するかもしれません。
まぁ、怪しい動きを見かけたら一番最初にここを疑ってみましょうそうしましょう。
その気持ちを忘れないための投稿。
オフトピック
投稿してから改めて読み直すと気になる点があったのであとで確認する。
あとで。
あとで。
あとで。
あとで。