2008-11-05 8 views
4

Могу ли я безопасно в литейном логическое значение C++ к API BOOL Windows, с помощью этой конструкцииКак мне наложить bool на BOOL?

bool mybool = true; 
BOOL apiboolean = mybool ? TRUE : FALSE; 

Я бы предположить, что это да, потому что я не вижу никаких очевидных проблем, но я хотел бы воспользоваться моментом для спросите только потому, что это может быть более тонким, чем кажется.

Благодаря Диме (мягко), указывая на мою небрежность в том, как я изначально сформулировал вопрос.

ответ

10

ли вы имеете в виду


bool b; 
... 
BOOL apiboolean = b ? TRUE : FALSE; 

Если да, то да, это будет работать.

+0

Duh. Извините, вы, конечно, правы. Благодарю. Я исправлю свой вопрос. – 2008-11-05 19:46:09

3

Да, это будет работать, но

bool b; 
... 
BOOL apiboolean = (BOOL) b; 

должны работать точно так же, как и обратное:

bool bb = (bool) apiboolean; 
+0

В этом случае вы должны использовать static_cast (b). – Dima 2008-11-05 20:25:16

1

Visual Studio 2005 будет просто принять:

bool b = true; 
BOOL apiboolean = b; 

не требуется литье.

Обратите внимание, что в противном случае BOOL-> bool работает не так.

 Смежные вопросы

  • Нет связанных вопросов^_^