Я использую Visual C ++ 2008 SP1 Pro. Следующий фрагмент кода не скомпилируется:
int main(void) {
System::Boolean^ foobar = true;
if (foobar == true) {
System::Console::Write("yeah!");
}
}
Выдает следующие ошибки:
1>.\main.cpp(3) : warning C4805: '==' : unsafe mix of type 'System::Boolean ^' and type 'bool' in operation
1>.\main.cpp(3) : error C2446: '==' : no conversion from 'int' to 'System::Boolean ^'
1> No user-defined-conversion operator available, or
1> No standard conversion exists from the boxed form of the arithmetic type to the target type
1>.\main.cpp(3) : error C2040: '==' : 'System::Boolean ^' differs in levels of indirection from 'int'
Следующий код прекрасно компилируется:
int main(void) {
System::Boolean^ foobar = true;
if (foobar->Equals(true)) {
System::Console::Write("yeah!");
}
}
Я что-то не так делаю? Есть ли лучший способ сравнить System :: Boolean с bool в C ++ / CLI, чем с помощью -> Equals () и -> CompareTo ()?