这是我的构造函数:
Tree::Tree(char* Pinfo, Tree treeL, Tree treeR){
info=Pinfo;
Tree* pointPsubTreeL = &treeL;
if(pointPsubTreeL){
cout<<"it is not NULL"<<endl;
subTreeL=treeL.getCopy();}
else{
//it never enter here even if treeL == NULL
cout<<"it is NULL"<<endl;
subTreeL=NULL;}
subTreeR=treeR.getCopy();
}
我不知道为什么但是NULL变成类似于对象树,然后我不知道参数是否为NULL。 换句话说,当我在树中到达这个NULL元素时,它的行为就像一棵树。 任何想法为什么以及如何避免这种情况?
答案 0 :(得分:0)
您在参数中取Tree
,这些参数始终是对象。每当您将Tree
传递给此方法时,将通过调用Tree
的复制构造函数来创建该树的新副本。
我假设你想要的方法是Tree(char* Pinfo, Tree* treeL, Tree* treeR)
。
这样传入NULL
会有效,但你必须将指针传递给左右树。将指针传递给Tree
将意味着您不需要重复,但可能需要您在堆上分配它们以保持指针有效。