C ++ Структурировать внутреннюю путаницу деклараций? [Дубликат]

0

Я встретил декларацию внутри C++ Struct {..}, которую я никогда раньше не видел. Может ли кто-нибудь сказать мне, что это значит;

struct DerivedMesh {

char cd_flag;

void (*calcNormals)(DerivedMesh *dm); // <-- What is this?

Это похоже на разыменование указателя под названием calcNormals, но все это я могу разобрать.

  • 0
    Выглядит как указатель на функцию, указатель на функцию, которая принимает параметр DerivedMesh *dm и возвращает void.
  • 0
    Соответствующее: спиральное правило
Показать ещё 1 комментарий
Теги:
struct

2 ответа

2

Это синтаксис C для объявления указателей функций.

В этом конкретном примере DerivedMesh будет иметь член calcNormals который является указателем на функцию, принимающую единственный аргумент типа DerivedMesh*. Его можно назвать обычной функцией:

void foo(DerivedMesh* dm) { ... }

DerivedMesh dm;;
// Init members and set calcNormals to actual function
dm.cf_flag = whatever;
dm.calcNormals = foo;
dm.calcNormals(&dm); // calls foo
0

Эта

void (*calcNormals)(DerivedMesh *dm); 

является определением члена данных класса с именем calcNormals который имеет тип указателя на функцию типа void( DerivedMesh * )

Ещё вопросы

Сообщество Overcoder
Наверх
Меню