#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();
}