2016-05-05 4 views
0

У меня есть структура, которая имеет функцию как один из ее членов. КакКак использовать указатель функции, являющийся членом структуры

Creature.move = moveAway; 

moveAway быть имя функции. Итак, как вы можете точно использовать эту функцию?

+1

C не позволяет членам функции, так как это не язык ООП. Вы можете смутить C++. Предоставьте [mcve] – Olaf

ответ

3

C не hav e, что означает, что ваш член, по-видимому, не является функцией, а функцией указатель. Для того, чтобы вызвать целевую функцию через этот указатель, что у вас есть выбор: либо

Creature.move(/* arguments */); 

или

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

Выберите какой вам больше нравится. Оба варианта делают то же самое.

3

элемент является указателем на функцию, и вы можете назвать это так же, как обычную функцию:

Creature.move(); 

Или, если он принимает дополнительные аргументы:

Creature.move(arg1, arg2, arg3); 

(Вы можете разыменовать функции указатель сначала, если хотите, но он просто распадется обратно на функцию указателя: (*Creature.move)();, (**Creature.move)();, (*****Creature.move)();, ...)

+1

Хмм, будучи 6-звездочным C-программистом ... ;-) – Olaf

+0

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

+0

@KerrekSB: О, я не сомневался, что это законно , Для этого просто приходят некоторые интересные метакодирующие приложения :-) – Olaf

Смежные вопросы