Objective C - 在头文件中使用typedef struct

3

我正在尝试在Objective C中创建一个链表。

在.h文件中,我正在尝试使用以下代码创建一个节点:

@interface AALinkedList : NSObject
{
    typedef struct Node
    {
        int data;
        struct Node *next;
    } Node;
}

这个错误提示我“类型名称不允许指定存储类”,这是什么意思?如何修复?


1
在Objective-C类的数据部分中,您无法定义新类型。 存储类typedef有关,因为它就像staticauto一样是一种存储类。 - user3125367
2个回答

5
typedef struct Node {
    int data;
    Node *next;
} Node;

@interface AALinkedList : NSObject
{
    Node node;
    // or Node *node;
}

1
为什么它会出现在@interface之上? - Ashish Agarwal
2
因为 @interface {struct { 几乎相同,而且你不能在结构体内定义新类型。 即使你能够这样做,这也是毫无意义的,因为名称的作用范围仅限于该结构体。 - user3125367

0

你不能在.h文件中声明typedef。将其声明在.m文件中。应该可以让你继续进行。将方法签名放在.h上。

你可以像这样创建一个简单的链表类。

@interface LinkedNode : NSObject 
  @property (nonatomic, strong) id nextNode;
@end
then you use it as you would expect:

id currentNode = myFirstNode;
do {
  [currentNode someMessage];
}
while(currentNode = currentNode.nextNode);

为什么?在 .m 文件中的哪里? - Ashish Agarwal
这不是真的,你可以在.h或.m文件中正确的位置声明它。但使用属性比结构体更好。 - Wain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接