exponenta event banner

Обнуление метода вызова этого указателя

this указатель имеет значение null во время вызова функции-члена

Описание

Эта проверка на this dereference указателя определяет, является ли указатель 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();
}

В этом примере указатель myCompany инициализирован в NULL. Поэтому, когда указатель используется для вызова функции-члена addNewClient, метод вызова Null this-pointer приводит к красной ошибке.

Исправление - инициализация указателя с допустимым адресом

Одной из возможных корректировок является инициализация myCompany с допустимым адресом памяти с использованием new оператор.

#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