-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 はオブジェクト Tree のようなものになり、パラメータが NULL かどうかわかりません。つまり、ツリーでこの NULL 要素に到達すると、ツリーのように動作します。これを回避できる理由と方法はありますか?

4

1 に答える 1

0

Tree常にオブジェクトになるパラメーターを取得しています。このメソッドに aを渡すたびに、のコピー コンストラクターTreeを呼び出すことによって、そのツリーの新しいコピーが作成されます。Tree

必要なメソッドはTree(char* Pinfo, Tree* treeL, Tree* treeR).

この方法で渡すNULLことはできますが、ポインターを左右のツリーに渡す必要があります。sへのポインターを渡すTreeことは、重複する必要がないことを意味しますが、ポインターを有効に保つために、おそらくそれらをヒープに割り当てる必要があります。

于 2013-05-05T08:30:09.413 に答える