When I compile my code in Dev C++, I get this error: [Error] Id returned 1 exit status
When I compile my code in Dev C++, I get this error: [Error] Id returned 1 exit status
这是一个简单的二叉树程序的代码:
#include <iostream>
using namespace std;
template <class Tree>
class node
{
public:
node()
{
this->tree=NULL;
this->leftnode=this->rightnode=NULL;
};
~node();
node(Tree* base)
{
this->tree=base;
this->leftnode=this->rightnode=NULL;
};
Tree* getnodevalue()
{
return this->tree;
};
node* getleftnode()
{
return leftnode;
};
node* getrightnode()
{
return rightnode;
};
void newleft(node* val)
{
this->leftnode=val;
};
void newright(node* val)
{
this->rightnode=val;
};
void newnode(Tree* val)
{
this->tree=val;
};
int chkleaf()
{
if(this->leftnode==NULL && this->rightnode==NULL)
return 1;
return 0;
}
void insert(node* nextnode, int* value)
{
node <int>* nodecounter= new node<int>(value);
node<int> *p, *q;
p=q=nextnode;
while(*value!=*(p->getnodevalue()) && q!=NULL)
{
p=q;
if(*value<*(p->getnodevalue()))
q=p->getleftnode();
else
q=p->getrightnode();
};
if(*value==*(p->getnodevalue()))
{
cout<<"Duplicate"<<*value<<"\n";
delete nodecounter;
}
else if(*value<*(p->getnodevalue()))
p->newleft(nodecounter);
else
p->newright(nodecounter);
};
private:
Tree* tree;
node* leftnode;
node* rightnode;
};
int main(int argc, char* argv[])
{
int newtree[5]={0,45,67,34,24};
node<int>* node1= new node<int>();
node1->newnode(&newtree[0]);
for(int i=1; newtree[i]>0; i++)
{
node1->insert(node1, &newtree[i]);
};
return 0;
}
我不明白这是什么问题,我以前从未遇到过这种错误。是编码问题还是其他问题?非常感谢一些见解
链接器抱怨缺少析构函数定义。
改变
node();
到
~node() {}
或者,如果您使用的是 c++11
~node() = default;
您还需要使用 delete
语句释放析构函数中使用的内存。
这是一个简单的二叉树程序的代码:
#include <iostream>
using namespace std;
template <class Tree>
class node
{
public:
node()
{
this->tree=NULL;
this->leftnode=this->rightnode=NULL;
};
~node();
node(Tree* base)
{
this->tree=base;
this->leftnode=this->rightnode=NULL;
};
Tree* getnodevalue()
{
return this->tree;
};
node* getleftnode()
{
return leftnode;
};
node* getrightnode()
{
return rightnode;
};
void newleft(node* val)
{
this->leftnode=val;
};
void newright(node* val)
{
this->rightnode=val;
};
void newnode(Tree* val)
{
this->tree=val;
};
int chkleaf()
{
if(this->leftnode==NULL && this->rightnode==NULL)
return 1;
return 0;
}
void insert(node* nextnode, int* value)
{
node <int>* nodecounter= new node<int>(value);
node<int> *p, *q;
p=q=nextnode;
while(*value!=*(p->getnodevalue()) && q!=NULL)
{
p=q;
if(*value<*(p->getnodevalue()))
q=p->getleftnode();
else
q=p->getrightnode();
};
if(*value==*(p->getnodevalue()))
{
cout<<"Duplicate"<<*value<<"\n";
delete nodecounter;
}
else if(*value<*(p->getnodevalue()))
p->newleft(nodecounter);
else
p->newright(nodecounter);
};
private:
Tree* tree;
node* leftnode;
node* rightnode;
};
int main(int argc, char* argv[])
{
int newtree[5]={0,45,67,34,24};
node<int>* node1= new node<int>();
node1->newnode(&newtree[0]);
for(int i=1; newtree[i]>0; i++)
{
node1->insert(node1, &newtree[i]);
};
return 0;
}
我不明白这是什么问题,我以前从未遇到过这种错误。是编码问题还是其他问题?非常感谢一些见解
链接器抱怨缺少析构函数定义。
改变
node();
到
~node() {}
或者,如果您使用的是 c++11
~node() = default;
您还需要使用 delete
语句释放析构函数中使用的内存。