C++ 请参见声明行的not声明错误
我得到编译器错误“rightTree尚未声明”正好在我声明rightTree的行上 另外,当我在上面声明树时,它会说“树不命名类型” leftTree的情况也一样 代码: 提前感谢您的帮助 我已经编写了一个代码,用于从O(logn)中的数组构建分段树 我无法调试此错误。 我在网络中查找它,它说要在上面声明树和节点,但这也不起作用 此外,在写入节点时*节点=新节点;显示无错误。代码>树*合并树(节点**节点,树*树,整数开始,整数结束)C++ 请参见声明行的not声明错误,c++,pointers,recursion,tree,structure,C++,Pointers,Recursion,Tree,Structure,我得到编译器错误“rightTree尚未声明”正好在我声明rightTree的行上 另外,当我在上面声明树时,它会说“树不命名类型” leftTree的情况也一样 代码: 提前感谢您的帮助 我已经编写了一个代码,用于从O(logn)中的数组构建分段树 我无法调试此错误。 我在网络中查找它,它说要在上面声明树和节点,但这也不起作用 此外,在写入节点时*节点=新节点;显示无错误。代码>树*合并树(节点**节点,树*树,整数开始,整数结束) 您必须重命名第二个参数。参数的名称隐藏了类型的名称。问题在于
您必须重命名第二个参数。参数的名称隐藏了类型的名称。问题在于,在方法
mergeTree
中,名称Tree
指的是第二个变量Tree*Tree
,而不是类型Tree
(变量名称隐藏了类型名称)
更改为
Tree*Tree
(小写)以修复它。在函数声明中,第二个参数的名称隐藏结构Tree
的名称
Tree* mergeTree(Node** nodes,Tree* Tree,int start,int end){
^^^^^^^^^^
因此,她重命名参数或使用结构树的详细类型名称,例如
struct Tree* rightTree = new struct Tree;
In认为可变长度数组不是C++的标准特征。所以一般来说,这个代码
int n;
cin>>n;
int a[n],i=0;
这是无效的
此外,主存储器中存在内存泄漏
int main() {
Tree* segmentTree=new Tree;
// ...
segmentTree=segmentTree_form(a,n);
//..
return 0;
}
首先,动态分配内存,并将其地址分配给指针segmentTree
,然后覆盖该指针。因此,分配的内存不会被释放
您应该使用new操作符而不是malloc。所以这个代码片段
Tree* segmentTree_form(int a[],int n){
int i=0;
Node** nodes=(Node**)malloc(n*sizeof(Node*));
没有意义。以前还有其他错误吗?
int main() {
Tree* segmentTree=new Tree;
// ...
segmentTree=segmentTree_form(a,n);
//..
return 0;
}
Tree* segmentTree_form(int a[],int n){
int i=0;
Node** nodes=(Node**)malloc(n*sizeof(Node*));