我可以使用null
或nullptr
作为bool
值而不是0
/ false
吗?
由于将bool
声明为null
意味着bool
值实际上是zero
/ false
,并且在我的情况下不起作用。我使用zero
/ false
作为另一种可能的结果。我希望有一个可以“不存在”的bool值。 (既不是真的也不是假的)。
答案 0 :(得分:1)
答案 1 :(得分:0)
如果您可以在项目中使用boost,则boost::optional
适合您。如果您熟悉Haskell的Maybe
,它的工作方式就像那个。{/ p>
简单的使用示例(来自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!");