C ++ Struct内部声明混乱?

时间:2014-08-22 16:04:50

标签: c++ c struct

我在C ++ Struct {...}中遇到了一个我从未见过的声明。 谁能告诉我它意味着什么;

struct DerivedMesh {

char cd_flag;

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

它看起来像是取消引用一个名为calcNormals的指针,但这就是我能搞清楚的。

2 个答案:

答案 0 :(得分:2)

这是用于声明function pointers

的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

答案 1 :(得分:0)

void (*calcNormals)(DerivedMesh *dm); 

是名为calcNormals的类数据成员定义,其类型为指向void( DerivedMesh * )类型函数的指针