2016-09-29 61 views
1

我有一个C程序如下结构我想转换为斯威夫特:转换C结构斯威夫特结构

struct record 
    { int r; 
     int c; 
     int val; 
     struct record *next; 
    }; 

雨燕不会允许在其内部的指针(引用)的结构。 C代码的工作方式允许每条记录包含一个指向下一条记录的指针,以便通过记录轻松进行迭代。

有没有办法强制这个工作使用UnsafeMutablePointer什么的?

谢谢你的任何建议!

+3

使它成为'class'类型... –

+0

@Martin R说什么。从Swift文档:“结构总是在您的代码中传递时被复制...” –

+0

您也可以使用“间接枚举”,请参阅https://airspeedvelocity.net/2015/07/26/linked -lists-enums-value-types-and-identity /例如。 –

回答

0

Swift不会允许指针(引用)到自身内部的结构。

没错。然而,它允许一个可选class参考:

class record { 
    var r : Int = 0 
    var c : Int = 0 
    var val : Int = 0 
    var next : record? = nil 
}; 

这就是你所需要的:因为next指针允许为NULL在C,你应该能够将其设置为nil斯威夫特。

+0

结构体或类? –

+1

@ Mr.UB我会用班级。 'struct'需要遍布各处的可变性标记,使得物体难以使用。 – dasblinkenlight

+0

如果这个答案是一个结构体,那么它是不是真的会制作下一个记录的副本,而不仅仅是对它的引用? –