This question already has an answer here:
Closed 5 years ago.
Factory Pattern: typedef Class *(createClassFunction)(void)
(1个答案)
我在C++Stult{}中遇到了一个我从未见过的声明。
有人能告诉我这是什么意思吗;
struct DerivedMesh {

char cd_flag;

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

它看起来像是解引用了一个名为calcNormals的指针,但这就是我能理解的。

最佳答案

这是用于声明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

07-26 04:16