Puis-je utiliser null
ou nullptr
comme valeur bool
au lieu de 0
/false
?
Depuis déclarer un bool
comme null
signifie que la valeur bool
est réellement zero
/false
et cela ne fonctionne pas dans mon cas. J'utilise zero
/false
comme autre résultat possible. Je voudrais avoir une valeur booléenne qui peut être 'inexistante' (ni vraie ni fausse).Déclarer une variable booléenne comme NULL dans C++
0
A
Répondre
1
Vous pouvez jeter un oeil à boost::optional ou boost::tribool
0
Si vous pouvez utiliser coup de pouce dans votre projet, puis boost::optional
est pour vous. Cela fonctionne comme Maybe
de Haskell si vous êtes familier avec cela.
Des exemples simples d'utilisation (de http://www.boost.org/doc/libs/1_60_0/libs/optional/doc/html/boost_optional/examples.html):
// return values
optional<char> get_async_input()
{
if (!queue.empty())
return optional<char>(queue.top());
else return optional<char>(); // uninitialized
}
void receive_async_message()
{
optional<char> rcv ;
// The safe boolean conversion from 'rcv' is used here.
while ((rcv = get_async_input()) && !timeout())
output(*rcv);
}
// local variables
optional<string> name ;
if (database.open())
{
name = database.lookup(employer_name) ;
}
else
{
if (can_ask_user)
name = user.ask(employer_name) ;
}
if (name)
print(*name);
else print("employer's name not found!");
Vous voulez utiliser un type qui a deux valeurs possibles pour représenter plus de deux valeurs possibles. Cela semble que ça va finir en larmes. Utilisez un type différent qui peut représenter toutes les valeurs qui vous intéressent. –
http://thedailywtf.com/articles/What_Is_Truth_0x3f_ –