我在Py ++生成的C++程序中有一个奇怪的typedef语句。

double radius(int);  // function to be wrapped
typedef double (*radius_function_type)(int);
bp::def("radius", radius_function_type(&radius));   // bp::def is a function for wrapping

到目前为止,我发现上面的typedef状态不是我们大多数人都熟悉的类型,
typedef complex_type simple_alias;

相反,这是一种声明指向函数的指针的方法,该函数以int作为参数并返回double(与原型(prototype)相同)。所以,我现在的问题是,如何将指向函数(不取消引用)的指针称为称为的,并以函数的地址作为参数?这也与原型(prototype)不匹配。有人请解释!

最佳答案

您的问题令人困惑。您是否在问这是做什么的:

radius_function_type(&radius)"

这只是一个C++类型转换,有点像:
radius (int (42));

但是由于radius已经是radius_function_type类型,因此您可以轻松地做到这一点:
bp::def("radius", radius);

但是由于这是Py ++生成的代码,因此在输出时可能要格外小心。

关于c++ - 如何在不取消引用的情况下调用函数指针?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/944479/

10-13 00:04