Используйте NULL в конструкторе по умолчанию - PullRequest
0 голосов
/ 01 апреля 2020

В моем классе C ++ (заголовочный файл) я использую это:

int pWholesalerId;

Теперь я создал конструктор по умолчанию. Возможно ли установить значение этого атрибута как ноль?

Game::Game()
{
    gId = 0;
    pWholesalerId = Null;
}

в настоящее время я получаю identifier "Null" is undefined, хотя я уже использую #include <stddef.h>

Ответы [ 3 ]

2 голосов
/ 01 апреля 2020

Нет.

Нет такой вещи, как установка int в ноль. int с являются числами. Они не могут быть "обнуляемыми".

Вы можете рассмотреть динамическое распределение c как std::unique_ptr<int> (хотя это очень тяжело для int) или std::optional<int>.

В качестве альтернативы, просто следите за тем, является ли значение int «значимым» или нет (например, с помощью bool или изучая некоторые другие аспекты состояния вашего класса). Установка 0 может достигать или не достигать sh этой цели, в зависимости от ваших требований.

1 голос
/ 01 апреля 2020

В заголовке C <stddef.h> или в заголовке C ++ <cstddef> отсутствует макрос Null. Здесь определен макрос NULL. Но он используется для инициализации указателя константой нулевого указателя.

В вашем конструкторе вы должны просто написать

pWholesalerId = 0;
0 голосов
/ 01 апреля 2020

Напишите просто

int pWholesalerId = 0;

в заголовочном файле с аналогичным оператором для gId, затем полностью удалите конструктор по умолчанию.

Null не определяется стандартом C ++ , NULL есть, но его значение варьируется в C и C ++ и его лучше избегать. Используйте 0, чтобы назначить int, и nullptr, чтобы назначить тип указателя.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...