-3

这是我的构造函数:

    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 元素时,它的行为就像一棵树。任何想法为什么以及如何避免这种情况?

4

1 回答 1

0

您正在接受Tree始终是对象的参数。每当您将 a 传递给Tree此方法时,将通过调用Tree的复制构造函数来创建该树的新副本。

我假设您想要的方法是Tree(char* Pinfo, Tree* treeL, Tree* treeR).

这种方式传入NULL将起作用,但您必须将指针传递给左右树。将指针传递给Trees 意味着您不需要重复,但可能需要您在堆上分配它们以保持指针有效。

于 2013-05-05T08:30:09.413 回答