У меня есть класс с внутренним логическим значением, которое кажется хорошим кандидатом для перегрузки оператора Bool < /em>, например: < /p>
Код: Выделить всё
class MyBool{
private:
bool value_ = false;
// Nice API and logic to set the interal value_ to true or false...
public:
explicit operator bool() const {
return value_;
};
};
Оператор, встроенный в in the hy, while, для; && и ||; < /li>
Первый операнд условного оператора? это: < /p>
Код: Выделить всё
MyBool x;
///...
bool y = x; // --> error: cannot convert ‘MyBool’ to ‘bool’ in initialization
// or:
bool z;
z = x; // --> error: cannot convert ‘MyBool’ to ‘bool’ in assignment
// Or returning from a function:
bool func(...){
MyBool x;
// ...
return x; // --> error: cannot convert ‘MyBool’ to ‘bool’ in return
}
// Or in Gtests, like:
MyBool x;
// ...
EXPECT_TRUE(x); // --> error: no matching function for call to ‘testing::AssertionResult::AssertionResult(MyBool)’
bool get_value() const {
return value_;
}
< /code>
и используйте x.get_value () Каждый раз, когда мне нужно «поднимать» в Bool, даже в условиях, петлях и т. Д. efficit ключевое слово?
(предпочтительно в C ++ 11).
Подробнее здесь: https://stackoverflow.com/questions/613 ... overloaded