pybind11是一个用于将C++代码包装为Python模块的开源工具。它提供了一个简单而灵活的接口,使得在Python中使用C++类和函数变得更加容易。
要使用pybind11包装模板化的类,可以按照以下步骤进行:
pip install pybind11
。template <typename T>
class MyTemplateClass {
public:
MyTemplateClass(T value) : value_(value) {}
T getValue() const {
return value_;
}
private:
T value_;
};
#include <pybind11/pybind11.h>
#include <pybind11/stl.h>
#include "my_template_class.h" // 包含模板化的类头文件
namespace py = pybind11;
// 包装模板化的类
template <typename T>
void wrapMyTemplateClass(py::module& m, const std::string& className) {
py::class_<MyTemplateClass<T>>(m, className.c_str())
.def(py::init<T>())
.def("getValue", &MyTemplateClass<T>::getValue);
}
// 导出模板化的类
void wrapTemplateClasses(py::module& m) {
wrapMyTemplateClass<int>(m, "MyTemplateClassInt");
wrapMyTemplateClass<double>(m, "MyTemplateClassDouble");
}
// 创建Python模块
PYBIND11_MODULE(my_module, m) {
m.doc() = "pybind11 example module";
wrapTemplateClasses(m);
}
import my_module
# 创建模板化类的实例
my_int_instance = my_module.MyTemplateClassInt(42)
my_double_instance = my_module.MyTemplateClassDouble(3.14)
# 调用模板化类的方法
print(my_int_instance.getValue()) # 输出: 42
print(my_double_instance.getValue()) # 输出: 3.14
这样,你就可以使用pybind11包装模板化的类,并在Python中使用它们了。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云