1
У меня есть код в следующем виде:Неполного Типа вложенного класса
class Trie{
public:
Trie() : root(new TrieNode()){ };
// Inserts a word into the trie.
void insert(std::string word);
// Returns if the word is in the trie.
bool search(std::string word);
// Returns if there is any word in the trie
// that starts with the given prefix.
bool startsWith(std::string prefix);
private:
class TrieNode;
std::unique_ptr<TrieNode> root;
};
class Trie::TrieNode{
public:
TrieNode() : eow(false){ };
TrieNode* appendChar(char tar);
void end();
bool isEnd();
TrieNode* getChar(char tar);
int getInd(char tar);
private:
std::array<std::unique_ptr<TrieNode>, 26> data;
bool eow; // End of word
};
Однако в третьей строке, Trie(): root(new TrieNode())
, компилятор по-прежнему жалуется, что TrieNode
является неполным. Как я могу это исправить?
Спасибо!
Попробуйте определить класс TrieNode внутри класса Trie – Jytug
У вас не может быть 'new TrieNode' в точке, где' TrieNode' является неполным. –