J'ai écrit un petit test pour vérifier null pointeur, je l'ai simplifié avec int et 0, 1, au lieu de vraies classes, ce que j'essaie de tester est quelque chose comme: return p ? 1 : 0;
dans le monde réel serait return p ? p->callmethod() : 0;
test de pointeur valide en C++
bool TestTrueFalse();
void main()
{
int i = TestTrueFalse();
}
bool TestTrueFalse()
{
int one = 1;
int * p =&one;
*p = 0;
return p ? 1 : 0;
}
maintenant, vous pouvez le voir, une fois que le pointeur devient 0 à nouveau, le test échoue, pourquoi? qu'est-ce qui ne va pas avec ça? Quelle est la solution?
Je suis très confus par la question et le code. Si vous voulez vérifier un pointeur nul, 'if (p == 0) {...}' devrait être assez bon, non? Votre code n'utilise pas les types de données cohérents (bool vs int) et cela n'a pas beaucoup de sens non plus. – tenfour
Je ne vois pas comment le test peut échouer, vous ne définissez jamais le pointeur sur null. Le test devrait réussir. –
@tenfour: "si (p == 0) {...} devrait être assez bon, non?" 'if (! p) {...}' devrait être assez bon ... – SigTerm