2013-07-09 46 views
1

我建立一個二叉搜索樹,下面是add函數:設置默認參數nullptr在C非靜態類領域++

void BinaryTree::add(int value, Node*& node, Node*& parent) { 
    if(!node) { 
     node = new Node(value); 
     node->parent = parent; 
    } 
    else if(node->key < value) 
     this->add(value, node->rightNode, node); 
    else if(node->key > value) 
     this->add(value, node->leftNode, node); 
} 

我想設置默認參數爲最後兩個(節點,parent)參數:

void add(int value, Node*& node = root , Node*& parent = nullptr); 

其中root是該類的字段。

這似乎不適用於這兩種情況。我該如何執行它,這裏有什麼問題? 謝謝!

+1

'空加(int值,節點*節點=根,節點*父= nullptr)' –

+0

@pwny若在OP想要修改指針。 –

+0

@ShafikYaghmour你說的對,雖然我不得不承認這可能不是我見過的最好的二叉搜索樹設計 –

回答

2

您無法初始化對nullptr的引用。他們必須是有效的對象。爲了使root defualt對象,你可以用相同的名字添加新的功能

void BinaryTree::add(int value) { 
    Node* emptyParent = nullptr; 
    add(value, root, emptyParent); 
}