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

2 投票
1 回答
811 浏览
提问于 2025-04-16 01:00

我想了解一下,绑定用通用方式编写的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。

撰写回答