Я встретил декларацию внутри C++ Struct {..}, которую я никогда раньше не видел. Может ли кто-нибудь сказать мне, что это значит;
struct DerivedMesh {
char cd_flag;
void (*calcNormals)(DerivedMesh *dm); // <-- What is this?
Это похоже на разыменование указателя под названием calcNormals, но все это я могу разобрать.
Это синтаксис 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
Эта
void (*calcNormals)(DerivedMesh *dm);
является определением члена данных класса с именем calcNormals
который имеет тип указателя на функцию типа void( DerivedMesh * )
DerivedMesh *dm
и возвращает void.