Это код простой программы с двоичным деревом:
#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;
}
Я не могу понять, в чем проблема, у меня никогда не было этой ошибки раньше. Проблема с кодировкой или что-то другое? Был бы очень признателен за понимание
ld
также дал вам более подробное сообщение об ошибке? - person Biffen   schedule 30.11.2016~node();
на~node() {}
или~node() = default;
- person Bartosz Przybylski   schedule 30.11.2016g++ -Wall -g
). Подробнее о make - person Basile Starynkevitch   schedule 30.11.2016