2017-04-16 60 views
-1

我試圖讓NULL或nullptr工​​作在C++中。空檢查C + +

說我正在做一個二叉樹的序遍歷,就像這樣:

template <class DataType> 
void printInorder(someNode<DataType>* node) 
{ 
    if (node == NULL) 
      return; 

    /* first recur on left child */ 
    printInorder(node->left); 

    /* then print the data of node */ 
    printf("%d ", node->data); 

    /* now recur on right child */ 
    printInorder(node->right); 
} 

我已經嘗試設置如果(節點== NULL)到如果(節點== nullptr)。我也試過,如果(!節點),但空檢查線不斷忽略和傳遞。

我的代碼有點太長,不能包含更多內容,但是您是否會知道導致此類錯誤的任何常見原因?我在C++中並沒有非常使用null,但它似乎是一個相對常見的錯誤。這就是說,我一直無法在SO上找到這個問題的答案。

+1

你確定變量爲空嗎? – Barmar

+3

在向別人求助的同時禮貌的一部分,是將你的長代碼並減少到[mcve]。如果檢查被跳過,那麼這可能是一個採用'int *'的函數,如果它爲空則返回1,如果不爲空則返回0,然後向我們展示給出null時返回0,或直接打印不同的東西在任何情況下,只要我們可以運行並看到。 – chris

+1

您顯示的代碼是正確的。錯誤在別的地方。 –

回答

0

嗯,在你的問題中沒有足夠的信息來診斷這個問題,但我會採取一定的措施。我最好的猜測是,當您創建新節點時,您不會初始化leftright指針。未初始化指針的內容未定義(除非您非常幸運,否則不會是NULL)。