首页 > 解决方案 > SWIG INOUT 类型(C++ 到 Python)

问题描述

我正在为 C++ api 创建一个 python 包装器,使用模板或多或少地支持某些类型,但 api 需要一些变量通过引用,其中一个是 int,另一个是 float。

如果我没记错的话,它是通过创建一个 INOUT 应用来完成的,例如:

%apply float& INOUT { float& a };
%apply int& INOUT { int& a };

但是我如何在我的 python 中使用这些类型呢?

提前感谢您的任何提示。

标签: pythonc++cmakeswiginout

解决方案


这些参数是从生成的 python 函数返回的(考虑到包装的 C++ 函数签名,并不完全直观)。假设这是您公开的功能:

%apply float& INOUT { float& a };
%apply int& INOUT { int& b };

void foo(float& a, int& b);

你会从 python 调用它

a = 3.14
b = 42

a, b = foo(a, b)

如果不捕获返回值,则a保持b不变。


推荐阅读