我正在尝试在Objective C中创建一个链表。
在.h文件中,我正在尝试使用以下代码创建一个节点:
@interface AALinkedList : NSObject
{
typedef struct Node
{
int data;
struct Node *next;
} Node;
}
这个错误提示我“类型名称不允许指定存储类”,这是什么意思?如何修复?
我正在尝试在Objective C中创建一个链表。
在.h文件中,我正在尝试使用以下代码创建一个节点:
@interface AALinkedList : NSObject
{
typedef struct Node
{
int data;
struct Node *next;
} Node;
}
这个错误提示我“类型名称不允许指定存储类”,这是什么意思?如何修复?
typedef struct Node {
int data;
Node *next;
} Node;
@interface AALinkedList : NSObject
{
Node node;
// or Node *node;
}
@interface {
和 struct {
几乎相同,而且你不能在结构体内定义新类型。 即使你能够这样做,这也是毫无意义的,因为名称的作用范围仅限于该结构体。 - user3125367你不能在.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);
存储类
与typedef
有关,因为它就像static
或auto
一样是一种存储类。 - user3125367