使用boost.python将通用c ++库绑定到python

时间:2010-07-08 15:59:06

标签: c++ python generics templates boost

我想知道在绑定以通用方式编写的C ++库时的过程是什么。

是否可以绑定模板类,或者只能绑定模板生成的类?

1 个答案:

答案 0 :(得分:3)

您只能绑定生成的类。但是,可以编写模板函数来导出类,并为要导出的每个具体类型调用此函数。例如:

template<class T>
struct foo {};

template<class T>
void export_foo(std::string name) { 
    boost::python::class_<foo<T>>(name.c_str());
}

BOOST_PYTHON_MODULE(foo)
{
    export_foo<int>("foo_int");
    export_foo<std::string>("foo_string");
    //...
}

如果还不够,您还可以深入了解元编程(例如使用Boost.MPL),创建类型列表,并自动为所有这些类型调用export_foo。