ページ 11

関数ポインタ

Posted: 2017年11月09日(木) 21:29
by Ruben
c++で2DのRPGを幾つか作った経験がありますが、
関数ポインタを使用したことは一度もありません。

何か有効な利用法はあるのでしょうか?

Re: 関数ポインタ

Posted: 2017年11月09日(木) 22:34
by Dixq (管理人)
関数ポインタは変化するインプットに楽に応じる記述をかくことができますよ。
例えばゲームにおいて
・1秒後に敵が出現。その敵の動きはID=3だ。
・2秒後に敵が出現。その敵の動きはID=1だ。
こんな命令があったとき

void move_01(){
ID=1の処理
}
void move_01(){
ID=2の処理
}
void move_03(){
ID=3の処理
}

こんなそれぞれのメソッドを分けてコールしたいとします。
そんな時、
move_01,
move_02,
move_03,
のポインタをポインタ配列に格納しておけば
pointer[id]();
こんな形でidに応じた処理ができます。

Re: 関数ポインタ

Posted: 2017年11月09日(木) 22:39
by Dixq (管理人)
コードの汚さは大目に見るとして、考え方自体はここの通りです。
http://dixq.net/rp/12.html

Re: 関数ポインタ

Posted: 2017年11月10日(金) 09:50
by usao
callbackとか

Re: 関数ポインタ

Posted: 2017年11月10日(金) 21:32
by Ruben
回答有り難うございます。早速試してみました。
メンバ関数ポインタの文法にやや苦戦しましたが、
switch文などで場合分けしていた処理をスッキリ記述できますね。
いろいろ試してみようと思います。

どうも有り難うございました!