関数ポインタ

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Ruben

関数ポインタ

#1

投稿記事 by Ruben » 6年前

c++で2DのRPGを幾つか作った経験がありますが、
関数ポインタを使用したことは一度もありません。

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

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 13年前
住所: 北海道札幌市
連絡を取る:

Re: 関数ポインタ

#2

投稿記事 by Dixq (管理人) » 6年前

関数ポインタは変化するインプットに楽に応じる記述をかくことができますよ。
例えばゲームにおいて
・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: 関数ポインタ

#3

投稿記事 by Dixq (管理人) » 6年前

コードの汚さは大目に見るとして、考え方自体はここの通りです。
http://dixq.net/rp/12.html

アバター
usao
記事: 1887
登録日時: 11年前

Re: 関数ポインタ

#4

投稿記事 by usao » 6年前

callbackとか

Ruben

Re: 関数ポインタ

#5

投稿記事 by Ruben » 6年前

回答有り難うございます。早速試してみました。
メンバ関数ポインタの文法にやや苦戦しましたが、
switch文などで場合分けしていた処理をスッキリ記述できますね。
いろいろ試してみようと思います。

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

返信

“C言語何でも質問掲示板” へ戻る