2017-04-16 3 views
-1

C++で動作するようにNULLまたはnullptrを取得しようとしています。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); 
} 

私がしようとしている場合(ノード== nullptr)の場合(ノード== NULL)を設定する:

は、私はそうのように、バイナリツリーのINORDERトラバーサルをやっていると言います。私もちょうど(!ノード)ifしようとしましたが、nullチェックラインは無視され続けて渡されます。

私のコードはあまりにも長く含まれていますが、このタイプのエラーの一般的な原因を知っていますか? C++ではnullを使用していませんが、比較的一般的なエラーのようです。つまり、私はこの質問に対する答えを見つけることができませんでした。

+1

変数がnullであることを確認してください。 – Barmar

+3

他人に助けを求めている間にあなたの長いコードを取り、それを[mcve]に減らしているのは礼儀正しいことです。チェックがスキップされている場合、これは 'int *'を取って、それがヌルなら1を返し、ヌルでない場合は0を返し、ヌルが与えられたときに0を返すか、どちらの場合でも、私たちはそれを実行して見ることができる限りです。 – chris

+1

あなたが示したコードは正しいです。エラーは別の場所です。 –

答えて

0

この問題を診断するのにあなたの質問には本当に十分な情報はありませんが、私はそれに刺すつもりです。私の最高の推測では、新しいノードを作成するときにleftrightポインタを初期化していないということです。初期化されていないポインタの内容は未定義です(あなたが非常に運が良ければNULLになりません)。

関連する問題