boost python 参数结构体指针_Boost.Python函数指针作为类构造函数参数

好吧,这是一个很难回答的问题。问题的根本原因是没有一个python类型与C函数指针完全等价。Python函数有点接近,但是由于一些原因它们的接口不匹配。在

首先,我想从这里提到包装构造函数的技术:

http://wiki.python.org/moin/boost.python/HowTo#namedconstructors.2BAC8factories.28asPythoninitializers.29。这样就可以为对象编写一个^ {< CD1> }函数,它不直接对应于实际的C++构造函数。另外请注意,如果对象不是默认可构造的,则可能必须在boost::python::class_构造中指定boost::python::no_init,然后def一个实__init__函数。在

回到问题上来:

你通常只想传递一小部分函数吗?在这种情况下,您只需声明一个特殊的枚举(或专用类),生成一个接受该枚举的构造函数的重载,然后使用该重载来查找实际的函数指针。使用这种方法,您不能直接从python调用函数,但也没那么糟糕,而且性能将与使用真正的函数指针相同。在

如果您想提供一种通用的方法,可以用于任何python调用,那么事情就变得更复杂了。您必须向C++对象添加一个构造函数,该类接受一般的函子,例如使用^ {CD6}}或^ {CD7}}。如果需要,可以替换现有的构造函数,因为函数指针将正确转换为此类型。在

因此,假设您已经向boost::function添加了一个boost::function构造函数,那么您应该将这些函数添加到python包装代码中:struct WrapPythonCallable

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值