gpt4 book ai didi

c++ - 如何为指针引用定义 SWIG 类型映射?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:21 26 4
gpt4 key购买 nike

我有一个用 C++ 编写的 Publisher 类,具有以下两种方法:

PublishField(char* name, double* address);
GetFieldReference(char* name, double*& address);

此类的 Python 绑定(bind)是使用 SWIG 生成的。在我的 swig .i 文件中,我有以下内容:

 %pointer_class(double*, ptrDouble);

这让我可以发布一个在 Python 变量中定义的字段:

value = ptrDouble()
value.assign(10.0)
PublishField("value", value.cast())

然而,尝试使用 GetFieldReference 方法会导致 TypeError:

GetFieldReference("value", newValue)

我想我需要为返回 ptrDouble 的 double*& 创建一个类型映射,但我不太确定那会是什么样子。

最佳答案

这是我想出的一个可行的解决方案。

向 swig.i 文件添加包装器函数:

%inline %{
double * GetReference(char* name, Publisher* publisher)
{
double* ptr = new double;
publisher->GetFieldReference(name, ptr);
return ptr;
}
%}

现在从 Python 我可以使用以下内容:

value = ptrDouble.frompointer(GetFieldReference("value", publisher)

关于c++ - 如何为指针引用定义 SWIG 类型映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1499569/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com