2016-09-04 2 views
3

私は、LibraryBookという2つのクラスを宣言して実装しました。 LibraryにはプライベートメンバーBook** booksがあります。このポインターへのポインターは、Bookオブジェクトへのポインターを格納するために使用されます。次のように私はまた、Libraryクラスで+=演算子をオーバーロードしている:オブジェクトへのポインタをnullptrと比較することは許可されていますか?

Library& Library::operator+=(Book* addThisBook){ 
    bool added = false; 
    int index = 0; 

    if(isFull()){ 
     cout << "Library is full!" << endl; 
    }else{ 
     //add book in first available space 
     while(!added && index<librarySize){ 
      if(books[index] == nullptr){ 
       books[index] = addThisBook; 
       added = true; 
      } 
      index++; 
     } 
     numBooks++; 
    } 
    return *this; 
} 

私の質問は、if文の条件に関してです。カスタムクラスへのポインタをnullptrと比較することはできますか?

+0

ライブラリ( 'books [index]')が実際には 'nullptr'に初期化されていることを確認してください。 – dureuill

答えて

3

カスタムクラスへのポインタをnullptrと比較することはできますか?

はい、任意の型のポインタは、等価性のためにnullptrと比較できます。

+2

また、すべてのポインタは、チェック(ptr!= nullptr)を実行するbooleanへの暗黙的な変換を持っているので、OPは代わりに 'if(!books [index])'を書くことができます – AndyG

関連する問題