我对c ++很新,我正在尝试使用std :: map或其他c ++标准库容器类来实现一个简单的trie来存储字符串的词典。我希望能够做的是使用像
这样的东西typedef (map<char, type_node>)* type_node;
clang ++给我错误'使用未声明的标识符“type_node”'。
这与自引用结构相反,例如
typedef struct node {
int data;
struct node *next;
} Node;
以某种方式工作正常。
是否可以在不使用类或结构的情况下声明自引用类型?
为什么结构有效而不是递归别名类型?
有更好的方法吗?
答案 0 :(得分:0)
您无法声明类型不完整的容器[1]。所以map<char, type_node>
是一个错误,因此别名也是一个错误。
在C ++中,所有结构都是隐式的typedef&#39; d [2]。您的结构可以简化为:
struct node
{
int data;
node * next;
};
链接: