gpt4 book ai didi

c++ - Swift、C++ 和结构

转载 作者:搜寻专家 更新时间:2023-11-01 05:37:28 24 4
gpt4 key购买 nike

我需要发送 Swift struct由一些 C++ 代码的两个 float 组成。

快速结构

struct ComplexNumber
{
var real: Float
var imaginary: Float
}

C++ 方法签名

void processComplexNumbers(const ComplexNumber *complexNumbers, const int *indices);

我在 C++ 中定义了相同的结构。

当我尝试从 Swift 调用它时,出现错误无法从 UnsafePointer<ComplexNumber> 转换值到预期的参数类型 UnsafePointer<ComplexNumber> .以下代码是此错误的简单说明。

var samples = [ComplexNumber]()
var indices = [Int]()
var samplesPtr = UnsafePoiner<ComplexNumber>(samples)
var indices = UnsafePoiner<Int>(indices)
processComplexNumbers(samples, indices)

为什么我不能让它工作,有解决方法吗?

最佳答案

两个问题:

您可以在 Swift 中使用 C 结构,反之亦然(Swift 2.1)

我必须在 C 中定义一个相同的结构,称为 ComplexNumbersF(F 表示 float ),用于不安全指针调用。

var samples = [ComplexNumber]()
var samplesPtr = UnsafePoiner<ComplexNumberF>(samples)

整数不是整数。

如果你想使用 Swift 的 Int,C++ 等价物是 long。如果您使用 C++ int,所有其他值都将为 0。或者,您可以使用 Swift 的 Int32,但在我的情况下,这并不是真正可取的。

关于c++ - Swift、C++ 和结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35150912/

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