Циркулярно-зависимые структуры в C / C ++ - PullRequest
1 голос
/ 30 марта 2012

Вот простой вопрос, я реализую суффиксный массив, но я застрял здесь:

#define SIZE 150

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

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

Этот код не компилируется, в третьей строке есть ошибка, кто-нибудь может мне помочь, плз? спасибо: D

ОБНОВЛЕНИЕ: мой плохой, я забыл включить первую строку, извините, это мой первый вопрос здесь: P

Ответы [ 3 ]

8 голосов
/ 30 марта 2012

Вам необходимо переслать объявление перехода:

struct transition;  // <-- forward declaration

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

struct transition{
    int left, right;
    node *suffix_link;
};
1 голос
/ 30 марта 2012

Зачем пересылать объявление?

Поскольку полное определение transition еще не известно компилятору, когда вы его используете.

То же самое не требуется для узла , поскольку оно уже было определено при использовании его в transition .

1 голос
/ 30 марта 2012

Используйте предварительную декларацию:

struct transition;

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

struct transition
{
   int left, right;
   node *suffix_link;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...