C / C ++中的循环依赖结构

时间:2012-03-29 20:47:31

标签: c++ c struct suffix-tree

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

#define SIZE 150

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

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

这段代码不会编译,第三行有错误,任何人都可以帮我PLZ吗?谢谢:D

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

3 个答案:

答案 0 :(得分:8)

您需要转发申报转换:

struct transition;  // <-- forward declaration

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

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

答案 1 :(得分:1)

使用前瞻声明:

struct transition;

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

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

答案 2 :(得分:1)

为什么要转发声明?

因为,当你使用它时,编译器还不知道 transition 的完全定义。

node 不需要相同,因为在转换中使用它时已经定义了它。