gli*_*ite 3 c++ if-statement operator-overloading
我有我的课,我重载了!操作员:
class obj
{
public:
bool operator!() const
{ return this->str.length() == 0; }
private:
string str;
};
Run Code Online (Sandbox Code Playgroud)
对于!运营商我想检查obj有效性,所以:
obj o;
// if o is not a valid object
if(!o)
cerr << "Error";
Run Code Online (Sandbox Code Playgroud)
现在我希望有可能这样做:
// if o is a valid object
if(o)
cout << "OK";
Run Code Online (Sandbox Code Playgroud)
我能怎么做?
使用C++ 11,您可以通过以下方式执行此操作explicit operator bool:
explicit operator bool() const {
return !!*this;
}
Run Code Online (Sandbox Code Playgroud)
如果您需要将对象bool显式转换为显式(由if语句自动完成),则调用此运算符.该实现通过调用您operator !的接收器对象,然后返回相反的结果来工作.
希望这可以帮助!
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |