我有一个使用 Boost.Python 和 SFML 的项目。我的许多对象都公开了 SFML 类型,并且为了不复制轮子,我想从我自己的绑定中返回对象,这些绑定由 SFML 的 Python 绑定包装。例如,我有这个类:
class MyThing
{
public:
sf::Image& image() { return _image; }
private:
sf::Image _image;
};
绑定看起来像这样:
class_<MyThing>("MyThing")
.add_property("image", make_function(&MyThing::image, return_internal_reference<1>()))
;
当然,实际上尝试mything.image
从 Python 访问 yield TypeError: No Python class registered for C++ class sf::Image
,因为 Boost.Python 的转换注册表不知道sf::Image
(SFML 的 Python 绑定是用 Cython 完成的)。
有没有办法告诉 Boost.Python 转换注册表sf::Image
用 SFML 的 Python 绑定中的类型包装类型?