2012-03-29 12 views
1

Heres eine einfache Frage, ich bin Umsetzung Suffixarray aber ich bin hier fest:Kreis abhängige structs in C/C++

#define SIZE 150 

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

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

Dieser Code wird nicht kompiliert, da ist ein Fehler in der dritten Zeile, kann mir jemand helfen plz? Dank: D

UPDATE: Meine schlecht, dass ich die erste Zeile, sorry, es ist meine erste Frage hier nicht mit einberechnet: P

+0

Was ist 'SIZE'? Hast du 'Transition 'vorweggenommen? –

+0

Was ist der Fehler? Sie könnten versuchen, die Definition/Deklaration von 'transition' vor' node' zu ​​verschieben. – birryree

+0

ist das der ganze Code? Was ist der Fehler? – gbulmer

Antwort

8

Sie müssen Übergang weiterleiten erklären:

struct transition; // <-- forward declaration 

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

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

Danke: D Ich brauchte nur das, vielen Dank: D – maurizzzio

+0

@maurizzzio sicher, froh, zu helfen. –

1

Verwenden Sie eine Forward-Deklaration:

struct transition; 

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

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

Warum Forward-Deklaration?

Weil die vollständige Definition von Übergang dem Compiler noch nicht bekannt ist, wenn Sie es verwenden.

Das gleiche gilt nicht für Knoten erforderlich, da es bereits definiert worden ist, wenn Sie es in Übergang verwenden.