4 Stimmen

Wie kann ich ein bool in ein BOOL umwandeln?

Bin ich sicher in Casting ein C++ bool zu einem Windows API BOOL über dieses Konstrukt

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

Ich würde annehmen, dass dies ein Ja ist, weil ich keine offensichtlichen Probleme sehe, aber ich wollte mir einen Moment Zeit nehmen, um zu fragen, nur weil dies vielleicht subtiler ist, als es scheint.

Danke an Dima für den (sanften) Hinweis auf meine Unachtsamkeit bei der ursprünglichen Formulierung der Frage.

10voto

Dima Punkte 37984

Meinen Sie

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

Wenn ja, dann wird dies funktionieren.

0 Stimmen

Duh. Entschuldigung, Sie haben natürlich Recht. Danke. Ich werde meine Frage korrigieren. Ich werde meine Frage korrigieren.

3voto

James Curran Punkte 98228

Ja, das wird funktionieren, aber

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

sollte ebenso gut funktionieren wie der umgekehrte Weg:

bool bb = (bool) apiboolean;

0 Stimmen

In diesem Fall sollten Sie static_cast<BOOL>(b) verwenden.

1 Stimmen

Eigentlich sollten Sie es einfach implizit für Sie werfen lassen. Der Compiler weiß, wie man zwischen int und bool casten kann, und BOOL ist in der Regel ein Typedef für einen int-Typ.

1 Stimmen

Greg, bool zu int würde wahrscheinlich funktionieren, aber Visual Studio gibt Ihnen eine Warnung, wenn Sie versuchen, int zu bool zu casten.

1voto

Martin Ba Punkte 35131

Visual Studio 2005 akzeptiert einfach:

bool b = true;
BOOL apiboolean = b;

kein Guss erforderlich .

Beachten Sie, dass der umgekehrte Weg BOOL->bool nicht einfach so funktioniert.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X