関数ぽいんたのなぞ。

ねに
記事: 4
登録日時: 11年前

関数ぽいんたのなぞ。

投稿記事 by ねに » 11年前

意味がわかりません。いや、
意味はわかります。が、使いこなせてません。
いや、意味がわかってないから使えないのです。
私の師匠ともいえる龍神録プログラミングの館のソースを確認すると

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押しまくりです。
*,&,(),[]
いろんなものをつけたり消したりくくったり。
書く場所も関数の中に入れたり、外に出したり。

正直気持ち悪いです。だって理解できてないのだもん。
たくさんぐぐりましたともさ。
でも、こう、シンプルな例がほとんどで結局よくわかりません。
たぶん、たぶん理解できてないのは、関数ポインタ というより ポインタ だとは思いますが、が。
応用ばかりに目が行って、基礎が疎かだからこんなことになるのだけども!

もし次自分で新しいゲームを作るとしたときに使えるかといわれたら使えないことでしょう。
だがしかし、こうやって日記として投稿したことでうっすらと記憶できたので使おうと努力するかもしれません。

まぁ、怪しい動きを見かけたら一番最初にここを疑ってみましょうそうしましょう。
その気持ちを忘れないための投稿。

オフトピック
投稿してから改めて読み直すと気になる点があったのであとで確認する。
あとで。
あとで。
最後に編集したユーザー ねに on 2013年10月27日(日) 23:08 [ 編集 1 回目 ]

アバター
へにっくす
記事: 634
登録日時: 13年前

Re: 関数ぽいんたのなぞ。

投稿記事 by へにっくす » 11年前

C言語と同じノリで、C++言語でもやろうとすると結構ハマりますよ。(笑)

ロベールのC++教室
ここの第3部第57章、第58章をみると幸せになれるかもしれません。
最後に編集したユーザー へにっくす on 2013年10月28日(月) 05:15 [ 編集 1 回目 ]

アバター
usao
記事: 1889
登録日時: 12年前

Re: 関数ぽいんたのなぞ。

投稿記事 by usao » 11年前

>なぜ{}の中に&が
それは単にそういう文法(書き方の決まり)だから…

ねに
記事: 4
登録日時: 11年前

Re: 関数ぽいんたのなぞ。

投稿記事 by ねに » 11年前

こめんとありがとございます。

>へにっくすさんへ
>C言語と同じノリで、C++言語でもやろうとすると結構ハマりますよ。(笑)
あああ。
そういうことなんですねー。
ロベールさんはどっかで紹介されて二部五章くらいまで読みました。先は長いw

>usaoさんへ
CとC++の違い(?)だったんですねー。
http://www.geocities.jp/ky_webid/cpp/language/034.html
ここにのってたでした。C++であんぱさんど。

結局間違ってなかったようで、偶然動いてたわけじゃなくてよかったです。


安心!