Пустой вызывающий метод этого-указателя

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

Описание

Это начинает работу, указатель 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();
}

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

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

Одно возможное исправление должно инициализировать 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