Dans ma classe C ++ (fichier d'en-tête), j'utilise ceci:

int pWholesalerId;

Maintenant, j'ai créé un constructeur par défaut. Est-il possible de définir la valeur de cet attribut sur null?

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

Actuellement, j'obtiens identifier "Null" is undefined même si j'utilise déjà #include <stddef.h>

0
x89 1 avril 2020 à 14:51

3 réponses

Meilleure réponse

Non.

Il n'y a rien de tel que de définir un int sur null. Les int sont des nombres. Ils ne sont pas "annulables".

Vous pouvez envisager une allocation dynamique comme std::unique_ptr<int> (bien que cela soit très lourd pour un int) ou std::optional<int>.

Sinon, gardez simplement votre propre suivi pour savoir si la valeur de int est "significative" ou non (par exemple avec un booléen ou en examinant un autre aspect de l'état de votre classe). Le définir sur 0 peut ou non atteindre cet objectif, selon vos besoins.

2
Asteroids With Wings 1 avril 2020 à 11:58

Dans l'en-tête C <stddef.h> ou dans l'en-tête C ++ <cstddef>, il n'y a pas de macro Null. Il est défini la macro NULL. Mais il est utilisé pour initialiser un pointeur par une constante de pointeur nulle.

Dans votre constructeur, vous devez simplement écrire

pWholesalerId = 0;
1
Vlad from Moscow 1 avril 2020 à 11:58

Écrivez simplement

int pWholesalerId = 0;

Dans le fichier d'en-tête, avec une instruction similaire pour gId, puis supprimez complètement le constructeur par défaut.

Null n'est pas défini par le C ++ standard. NULL l'est mais sa signification varie en C et C ++ et il vaut mieux l'éviter. Utilisez 0 pour attribuer à un int et nullptr pour attribuer un type de pointeur.

0
Bathsheba 1 avril 2020 à 11:59