Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
绑定通用c++;使用boost.python将库转换为python 我想知道当用一般的方式编写C++库绑定的过程是什么时候。_C++_Python_Generics_Templates_Boost - Fatal编程技术网

绑定通用c++;使用boost.python将库转换为python 我想知道当用一般的方式编写C++库绑定的过程是什么时候。

绑定通用c++;使用boost.python将库转换为python 我想知道当用一般的方式编写C++库绑定的过程是什么时候。,c++,python,generics,templates,boost,C++,Python,Generics,Templates,Boost,是否可以绑定模板类,或者只能绑定模板生成的类?只能绑定生成的类。但是,可以编写一个模板函数来导出类,并为要导出的每个具体类型调用此函数。例如: template<class T> struct foo {}; template<class T> void export_foo(std::string name) { boost::python::class_<foo<T>>(name.c_str()); } BOOST_PYTHON_

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

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

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");
    //...
}
模板
结构foo{};
模板
void export_foo(std::string name){
boost::python::类(name.c_str());
}
BOOST_PYTHON_模块(foo)
{
出口食品(“食品国际”);
导出_foo(“foo_字符串”);
//...
}

如果这还不够,您还可以深入元编程(例如Boost.MPL),创建类型列表,并自动调用所有这些类型的export\u foo。

我忘了提到,我现在正在尝试为可配置数学库(cmldev.org)编写绑定