1つの終了ステータスが返さこれは単純なバイナリツリープログラムのコードです:私はDevのC++で私のコードをコンパイルするとき、私はこのエラーを取得:[エラー] Idは
#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;
}
私は何を理解することはできません問題は、私は以前にこのエラーがあったことはありません。それはコーディングの問題なのでしょうか?
(この場合リンクされている)コンパイラは正確に何を言っていますか? –
@Skyward確かに 'ld'ももっと詳細なエラーメッセージを出しましたか? – Biffen
デストラクタが不足している可能性がありますか? – Biffen