Bonjour,
j'aurais besoin de savoir si une propriété existe :
je voudrais savoir si la propriété "prenom" existe ?Code:fiche->prenom
merci de votre aide
Version imprimable
Bonjour,
j'aurais besoin de savoir si une propriété existe :
je voudrais savoir si la propriété "prenom" existe ?Code:fiche->prenom
merci de votre aide
Si elle existe pas, le code compilera pas. :calim2:
le code compile, le problème est que mon application sous Linux crash si la propriété n'existe pas, j'aimerais la checker pour prevenir ce problème.
Pour commencer, qu'appelles-tu "propriété" ? Une simple variable membre?
Il me semble qu'il y a moyen avec des templates de détecter si une classe ou structure définit ou non un certain membre, mais je ne me suis jamais penché d'assez près dessus pour comprendre comment cela marchait.
c'est ça "Une simple variable membre", comment faire ?
C'est une api Linux, des fois elle retourne la propriété "name" suivant le périphérique connecté, des fois non...
Pourrait-on avoir le vrai code ?
Si c'est le nom d'une variable membre, le code ne peut pas compiler si elle n'existe pas.
Partant de là, on peut pas deviner ce que tu appelles propriété, de quelle API tu parles ou quoi que ce soit.
Je m'y suis pris différemment et ça fonctionne.
Merci.
SalutEt donc:
- quel est le type de "name" lorsque cette valeur existe :question:
- quelle est la valeur qui est renvoyée lorsque ce n'est pas la propriété "name" :question:
De prime abord, je dirait sans doute
- qu'il s'agit d'un char * (un pointeur sur char) ou quelque chose de très semblable, et donc,
- je dirais que la valeur renvoyée est NULL (ou nullptr) lorsque ce n'est pas la propriété name"
Bien sur, je peux très bien me tromper! Mais, si j'ai raison, alors, le plus simple, c'est sans doute de t'assurer que cette propriété ne soit pas égale à nullptr avant de faire quoi que ce soit d'autre:
Code:
1
2
3
4
5
6
7
8
9 if(fiche->prenom != nullptr){ /* si on passe ici, alors prénom existe et est sensé être valide */ } /* ou même */ if(fiche->prenom){ // car nullptr peut implicitement être converti en la valeur booléenne // false, et donc, si la donnée est convertie en true, c'est que la valeur // n'est pas égale à nullptr /* si on passe ici, alors prénom existe et est sensé être valide */ }