1

这是一个简单的问题,我正在实现后缀数组,但我被困在这里:

#define SIZE 150

struct node{
     transition *next[SIZE];   //error here
};

struct transition{
    int left, right;
    node *suffix_link;
};

这段代码无法编译,第三行有错误,谁能帮帮我?感谢:D

更新:我的错,我忘了包括第一行,对不起,这是我的第一个问题:P

4

3 回答 3

8

您需要转发声明转换:

struct transition;  // <-- forward declaration

struct node{
     transition *next[SIZE];
};

struct transition{
    int left, right;
    node *suffix_link;
};
于 2012-03-29T20:49:37.653 回答
1

使用前向声明:

struct transition;

struct node
{
    transition *next[SIZE];
};

struct transition
{
   int left, right;
   node *suffix_link;
};
于 2012-03-29T20:51:04.720 回答
1

为什么要提前声明?

因为,当您使用它时,编译器还不知道转换的完整定义。

node不需要相同,因为它在您使用时已经定义了它transition

于 2012-03-29T20:55:41.337 回答