斯威夫特,C++;和结构 < >我需要发送一个Swift Stutt,它包含两个浮点到一些C++代码。

斯威夫特,C++;和结构 < >我需要发送一个Swift Stutt,它包含两个浮点到一些C++代码。,c++,swift,struct,C++,Swift,Struct,快速结构 C++方法签名 我在C++中有相同的结构。 当我尝试从Swift调用此函数时,我发现错误无法将值从UnsafePointer转换为预期的参数类型UnsafePointer。以下代码是此错误的简单说明 var samples = [ComplexNumber]() var indices = [Int]() var samplesPtr = UnsafePoiner<ComplexNumber>(samples) var indices = UnsafePoiner<I

快速结构 C++方法签名

我在C++中有相同的结构。

当我尝试从Swift调用此函数时,我发现错误无法将值从
UnsafePointer
转换为预期的参数类型
UnsafePointer
。以下代码是此错误的简单说明

var samples = [ComplexNumber]()
var indices = [Int]()
var samplesPtr = UnsafePoiner<ComplexNumber>(samples)
var indices = UnsafePoiner<Int>(indices)
processComplexNumbers(samples, indices)
var samples=[ComplexNumber]()
var指数=[Int]()
var samplesPtr=未安全保护器(样本)
var指数=不安全指数(指数)
ProcessComplexNumber(样本、索引)
为什么我不能让它工作?有解决办法吗?

两个问题:

您可以在Swift中使用C-struct,反之亦然(Swift 2.1) 我必须在C中定义一个相同的结构ComplexNumbersF(F代表float),用于不安全的指针调用

var samples = [ComplexNumber]()
var samplesPtr = UnsafePoiner<ComplexNumberF>(samples)
var samples=[ComplexNumber]()
var samplesPtr=未安全保护器(样本)
Int不是Int。

如果您想使用SWIFT的代码> INT/COD> > C++等价的是<>代码>如果使用C++ <代码> int <代码>,则其他值将为0。或者,您可以使用Swift的

Int32
,但在我的情况下,这并不是真正需要的。

sizeofValue(someArray)
提供了
struct Array
的大小,这与数组中的元素数量或元素本身的大小无关,比较一下,例如——更多信息可能会有所帮助:结构是如何定义的,调用什么函数?不能重写sizeofValue。而
struct Array
是一个固定大小的结构,其中包含指向实际存储(甚至可能是非连续的)的(不透明)指针正如我上面所说的,需要更多的信息来给出具体的答案。如果结构包含数组,那么仅传输结构可能是不够的,因为它不传输实际的数组元素。如何计算数组存储的大小,请参见:array.count*sizeof(elementType)。Pixel是包含UInt32的结构。您的问题是关于包含“一些数组”的结构对不起,没有具体的信息,我不在。这真的是对你原来问题的回答吗?如果没有,我建议编辑您的问题,并添加此额外部分。在我看来,这只是第一个问题的更多信息。@Marius也许现在它组织得更好了一点?如何在swift中使用c结构?我把一个放在我的桥接头上,但它并没有出现在Swift中。
var samples = [ComplexNumber]()
var indices = [Int]()
var samplesPtr = UnsafePoiner<ComplexNumber>(samples)
var indices = UnsafePoiner<Int>(indices)
processComplexNumbers(samples, indices)
var samples = [ComplexNumber]()
var samplesPtr = UnsafePoiner<ComplexNumberF>(samples)