如何在 SWIG 中为 c++ 创建模板函数?
Posted
技术标签:
【中文标题】如何在 SWIG 中为 c++ 创建模板函数?【英文标题】:How to create template function in SWIG for c++? 【发布时间】:2013-12-23 13:24:56 【问题描述】:我在 c++ 文件中有一个带有以下签名的模板函数
template <class T> std::vector<T> function(T);
我想用 Swig 制作一个接口文件来将 main.cpp 包装到 python 文件中。 对于 int float 和 double 类型,我应该如何在 Swig 中包含 Tfunction?
//main.i
%module main
%include "carrays.i"
%array_class(double, doubleArray);
%
extern template <class T> std::vector<T> Tfunction(T);
%
extern template <class T> std::vector<T> Tfunction(T);
【问题讨论】:
【参考方案1】:由于 Python 不知道模板,因此您必须为每个参数创建一个类型。您可以使用一个方便的 %template 指令:
%template(TfunctionInt) Tfunction<int>;
这在section 6.18 of SWIG docs中有详细解释。
【讨论】:
以上是关于如何在 SWIG 中为 c++ 创建模板函数?的主要内容,如果未能解决你的问题,请参考以下文章
Python 错误:在 SWIG 生成的 C++ 模板代码模块中未定义构造函数