C++ 错误:‘;根’;不命名类型

C++ 错误:‘;根’;不命名类型,c++,struct,types,g++,incomplete-type,C++,Struct,Types,G++,Incomplete Type,对于节点的所有属性和所有节点,我都会得到以下错误 n-tree.h:35:2: error: ‘root’ does not name a type root->parent = NULL; ^ 我想创建一个具有任意数量子节点的树。我为树定义创建了一个头文件 我首先将节点定义为结构。 然后使用节点的定义,我创建了一棵树 我尝试了许多方法来解决这个错误,例如,在nTree结构中定义Node结构,在其他常见实现中定义节点 这是n-tree #ifndef N_TREE #define

对于节点的所有属性和所有节点,我都会得到以下错误

n-tree.h:35:2: error: ‘root’ does not name a type
  root->parent = NULL;
  ^
我想创建一个具有任意数量子节点的树。我为树定义创建了一个头文件

我首先将节点定义为结构。 然后使用节点的定义,我创建了一棵树

我尝试了许多方法来解决这个错误,例如,在nTree结构中定义Node结构,在其他常见实现中定义节点

这是n-tree

#ifndef N_TREE
#define N_TREE
#include <cstdio>

struct Node
{
    Node* parent;
    Node* left_child;
    Node* right_sibling;
    double key;
};

struct nTree
{

// Nodes - attributes of the tree
Node* root;
Node* node1_1;
    Node* node1_1_1;
    Node* node1_1_2;

Node* node1_2;
    Node* node1_2_1;
    Node* node1_2_2;
    Node* node1_2_3;

Node* node1_3;
    Node* node1_3_1;



// Root level
root->parent = NULL;
root->left_child = node1_1;
root->right_sibling = NULL;
root->key = 1;

// Level 1_1
node1_1->parent = root;
node1_1->left_child = node1_1_1;
node1_1->right_sibling = node1_2;
node1_1->key = 2;

// Level 1_2
node1_2->parent = root;
node1_2->left_child = node1_2_1;
node1_2->right_sibling = node1_3;
node1_2->key = 3;

// Level 1_3
node1_3->parent = root;
node1_3->left_child = node1_3_1;
node1_3->right_sibling = NULL;
node1_3->key = 4;


// Level 1_1_1
node1_1_1->parent = node1_1;
node1_1_1->left_child = NULL;
node1_1_1->right_sibling = node1_1_2;
node1_1_1->key = 5;

 // Level 1_1_2
node1_1_2->parent = node1_1;
node1_1_2->left_child = NULL;
node1_1_2->right_sibling = NULL;
node1_1_2->key = 6;

// Level 1_2_1
node1_2_1->parent = node1_2;
node1_2_1->left_child = NULL;
node1_2_1->right_sibling = node1_2_2;
node1_2_1->key = 7;

// Level 1_2_2
node1_2_2->parent = node1_2;
node1_2_2->left_child = NULL;
node1_2_2->right_sibling = node1_2_3;
node1_2_2->key = 8;

// Level 1_2_3
node1_2_3->parent = node1_2;
node1_2_3->left_child = NULL;
node1_2_3->right_sibling = NULL;
node1_2_3->key = 9;

// Level 1_3_1
node1_3_1->parent = node1_3;
node1_3_1->left_child = NULL;
node1_3_1->right_sibling = NULL;
node1_3_1->key = 10;

};
#endif
#ifndef N#u树
#定义N_树
#包括
结构体类型
{
节点*父节点;
节点*左_子节点;
节点*右兄弟节点;
双键;
};
结构体
{
//节点-树的属性
节点*根;
节点*node1_1;
节点*node1_1_1;
节点*node1_1_2;
节点*node1_2;
节点*node1_2_1;
节点*节点1_2_2;
节点*node1_2_3;
节点*node1_3;
节点*node1_3_1;
//根水平
root->parent=NULL;
root->left\u child=node1\u 1;
root->right\u sibling=NULL;
根->键=1;
//一级
节点1_1->父节点=根节点;
节点1\u 1->左\u子节点=节点1\u 1\u 1;
节点1\u 1->右\u同级=节点1\u 2;
节点1_1->key=2;
//1级2
节点1_2->父节点=根节点;
节点1\u 2->左\u子节点=节点1\u 2\u 1;
节点1\u 2->右\u同级=节点1\u 3;
节点1_2->key=3;
//一级及三级
节点1_3->父节点=根节点;
节点1\u 3->左\u子节点=节点1\u 3\u 1;
节点1\u 3->右\u同级=空;
节点1_3->key=4;
//级别1_1_1
节点1_1_1->父节点=节点1_1;
节点1\u 1\u 1->左\u子节点=NULL;
节点1_1_1->右兄弟节点=节点1_1_2;
节点1_1_1->key=5;
//1级1级2级
节点1_1_2->父节点=节点1_1;
节点1\u 1\u 2->左\u子节点=NULL;
节点1\u 1\u 2->右\u同级=空;
节点1\u 1\u 2->key=6;
//1级2级1
节点1_2_1->父节点=节点1_2;
节点1\u 2\u 1->左\u子节点=NULL;
节点1_2_1->右兄弟节点=节点1_2_2;
节点1_2_1->键=7;
//1级2级2级
节点1_2_2->父节点=节点1_2;
节点1_2_2->左_子节点=NULL;
节点1_2_2->右兄弟节点=节点1_2_3;
节点1_2_2->key=8;
//1级2级3级
节点1_2_3->父节点=节点1_2;
节点1\u 2\u 3->左\u子节点=NULL;
节点1\u 2\u 3->右兄弟节点=NULL;
节点1_2_3->key=9;
//级别1\u 3\u 1
节点1\u 3\u 1->父节点=节点1\u 3;
节点1\u 3\u 1->左\u子节点=NULL;
节点1\u 3\u 1->右\u同级=空;
节点1\u 3\u 1->键=10;
};
#恩迪夫

这是n-tree_implement.cpp

#include <cstdio>
#include "n-tree.h"

int main()
{
    nTree* tree = new nTree;
    printf("%d\n", tree->root->key);
    delete tree;
}
#包括
#包括“n-tree.h”
int main()
{
nTree*树=新nTree;
printf(“%d\n”,树->根->键);
删除树;
}
当包含上述头文件时,nTree中的所有节点都会出现以下错误。

行:

root->parent = NULL;
root->left_child = node1_1;
root->right_sibling = NULL;
root->key = 1;
这是不合法的

我不太愿意提出解决方案,因为您的代码不清楚您打算如何使用
nTree

行:

root->parent = NULL;
root->left_child = node1_1;
root->right_sibling = NULL;
root->key = 1;
这是不合法的


我不想提出一个解决方案,因为从代码中看不出你打算如何使用<代码> NTROR> <代码> .< /P> C++,在声明变量时不需要<代码>结构> /COD>。例如,

Node*root可以正常工作。请在您的问题中逐字添加准确的错误消息。我将编辑问题。我已经评论了节点*根定义。在C++中,声明变量时不需要<代码>结构> /COD>。例如,
Node*root可以正常工作。请在您的问题中逐字添加准确的错误消息。我将编辑问题。我已经对节点*根定义进行了注释。换句话说,行应该在方法中。我想定义树的结构,而不是使用方法动态创建树。例如,nTree*树=新nTree;应创建树并打印F(“%d”,树->根->键);应该打印“1”@arttp2,这是模糊的。你需要更准确的信息。您希望如何创建节点?节点的结构是什么?你希望这棵树有多深?得到这些答案后,创建一个非成员函数来创建这样一个树,并填充该函数中您认为合适的树。我将用预期的树结构替换代码片段。@arttp2首先,不清楚类/结构方法的存在与树实例的动态创建有何关系。第二,C++中的代码必须在函数中(除了数据声明/定义),独立的或属于类的(AKA方法),换句话说,行应该是一种方法。我想定义树的结构,而不是使用方法动态创建它。例如,nTree*树=新nTree;应创建树并打印F(“%d”,树->根->键);应该打印“1”@arttp2,这是模糊的。你需要更准确的信息。您希望如何创建节点?节点的结构是什么?你希望这棵树有多深?得到这些答案后,创建一个非成员函数来创建这样一个树,并填充该函数中您认为合适的树。我将用预期的树结构替换代码片段。@arttp2首先,不清楚类/结构方法的存在与树实例的动态创建有何关系。第二,C++中的代码必须在函数中(除了数据声明/定义之外),独立的或属于类的(AKA方法)