2015-11-22 2 views
-1
struct Trie { 
    Trie letters [27]; 
    bool hasLetter; 
    bool EOW; 
    ... 
} 

ошибка: поле «буква» имеет неполную типObject параметр массив - ошибка: поле «буква» имеет неполное описание типа

Я получаю эту ошибку и не о том, чтобы выяснить, что случилось. Я пытаюсь создать Trie, используя массив, и я использую компилятор g ++. Буду признателен за любую оказанную помощь.

+2

Каждого 'Trie' также содержит двадцать семь больше' Trie's, которые все содержат двадцать семь более 'Trie's, все из которых содержат двадцать семь больше ... –

+0

Возможной дубликату [неполного типа в классе] (http://stackoverflow.com/questions/6349822/incomplete-type-in-class) –

ответ

1

Компилятор не принимает структуру, содержащую собственные экземпляры, если они не являются указателями. Ошибка, которую вы получаете, состоит в том, что декларация рекурсивно использует себя. (Trie содержит массив Trie, где каждый элемент содержит массив Trie, каждый из которых также содержит массив Trie и т. Д. И т. Д.)

Если вы действительно хотите, чтобы структура, содержащая экземпляры, изменила буквы на быть массивом указателей на Trie.

struct Trie { 
    Trie* letters [27]; // array of pointers to other Trie structs 
    bool hasLetter; 
    bool EOW; 
    ... 
}