Swi*_*ank 2 c++ oop operator-overloading c++11
我有一些可以设置或不设置的类:
Class obj;
Run Code Online (Sandbox Code Playgroud)
我希望它的值在逻辑中使用时返回是否已设置:
if ( obj )
obj.Clear();
if ( !obj )
obj.Set( "foo" );
Run Code Online (Sandbox Code Playgroud)
我想添加到 bool 的隐式转换,但我想知道 int 是否是必要的,或者是否有更好的方法来解决这个问题。
可以定义一个bool操作符,如下
#include <iostream>
struct Object{
bool state;
explicit operator bool()const{
return state;
}
};
int main(){
Object o1;
Object o2;
o1.state = false;
o2.state = true;
std::cout << "\no1 state is " << (o1? "true": "false");
std::cout << "\no2 state is " << (!o2? "false": "true");
}
Run Code Online (Sandbox Code Playgroud)
输出是
o1 state is false
o2 state is true
Run Code Online (Sandbox Code Playgroud)