c++で2DのRPGを幾つか作った経験がありますが、
関数ポインタを使用したことは一度もありません。
何か有効な利用法はあるのでしょうか?
関数ポインタ
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 関数ポインタ
関数ポインタは変化するインプットに楽に応じる記述をかくことができますよ。
例えばゲームにおいて
・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に応じた処理ができます。
例えばゲームにおいて
・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に応じた処理ができます。
- Dixq (管理人)
- 管理人
- 記事: 1661
- 登録日時: 13年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: 関数ポインタ
コードの汚さは大目に見るとして、考え方自体はここの通りです。
http://dixq.net/rp/12.html
http://dixq.net/rp/12.html
Re: 関数ポインタ
回答有り難うございます。早速試してみました。
メンバ関数ポインタの文法にやや苦戦しましたが、
switch文などで場合分けしていた処理をスッキリ記述できますね。
いろいろ試してみようと思います。
どうも有り難うございました!
メンバ関数ポインタの文法にやや苦戦しましたが、
switch文などで場合分けしていた処理をスッキリ記述できますね。
いろいろ試してみようと思います。
どうも有り難うございました!