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