2016-05-05 7 views
0

私はそのメンバの1つとして機能する構造体を持っています。 Like構造体のメンバである関数ポインタの使い方

Creature.move = moveAway; 

moveAwayは機能の名前です。 どうすればその機能を正確に使用できますか?

+1

CはOOP言語ではないため、関数メンバを許可しません。 C++と混同するかもしれません。 [mcve] – Olaf

答えて

3

Cはhavあなたのメンバーが明らかに関数ではなく、関数ポインタを意味するeメンバ関数。そのポインタを介してターゲット関数を呼び出すためには、それはあなたがの選択肢を持っているのいずれか

Creature.move(/* arguments */); 

または

(*Creature.move)(/* arguments */); 

あなたが一番好きな方を選択し

。どちらの変種も同じことをします。

3

メンバーは、関数ポインタで、あなただけの通常の関数のようにそれを呼び出すことができます機能を逆参照

Creature.move(arg1, arg2, arg3); 

(することができます:それは、さらに引数を取る場合

Creature.move(); 

あるいは、あなたが好きな場合は最初にポインタを指しますが、関数ポインタに戻ってすぐに減衰します:(*Creature.move)();(**Creature.move)();(*****Creature.move)();、...)

+1

Hmm、6人のCプログラマ... ;-) – Olaf

+0

[Demo](https://ideone.com/HYCRuP) –

+0

@KerrekSB:ああ、私はそれが合法だとは思わなかった。これを念頭に置いて、いくつかのインタラクティブメタコーディングアプリケーションがあります:-) – Olaf

関連する問題