使用boost.python将通用C++库绑定到Python
我想了解一下,绑定用通用方式编写的C++库的过程是什么样的。
有没有可能绑定一个模板类,还是说只能绑定一个模板生成的类呢?
1 个回答
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。