メインコンテンツ

null の this ポインターを呼び出すメソッド

メンバー関数呼び出しに際し this ポインターが null

説明

this ポインターのデリファレンスに関するこのチェックでは、ポインターが NULL かどうかが判別されます。

すべて展開する

#include <stdlib.h>
class Company {
 public:
  Company(int initialNumber):numberOfClients(initialNumber) {}
  void addNewClient() {
    numberOfClients++;
  }
 protected:
  int numberOfClients;
};

void main() {
 Company* myCompany = NULL;
 myCompany->addNewClient();
}

この例では、ポインター myCompanyNULL に初期化されます。したがって、このポインターを使用してメンバー関数 addNewClient を呼び出すと、[null の this ポインターを呼び出すメソッド] はレッド エラーを生成します。

修正 — 有効なアドレスでポインターを初期化

1 つの修正方法として、new 演算子を使用して、有効なメモリ アドレスで myCompany を初期化するとします。

#include <stdlib.h>
class Company {
 public:
  Company(int initialNumber):numberOfClients(initialNumber) {}
  void addNewClient() {
    numberOfClients++;
  }
 protected:
  int numberOfClients;
};

void main() {
 Company* myCompany = new Company(0);
 myCompany->addNewClient();
}

チェック情報

グループ: C++
言語: C++
頭字語: NNT