c++ - 设计一个可以在 if 语句中测试的类?

标签 c++ if-statement operator-overloading

我有我的课,在那里我重载了 ! 运算符:

class obj
{
public:

    bool operator!() const
    { return this->str.length() == 0; }

private:

    string str;

};

使用 ! 运算符我想检查 obj 有效性,所以:

obj o;

// if o is not a valid object
if(!o)
   cerr << "Error";

现在我想有可能做到这一点:

// if o is a valid object
if(o)
   cout << "OK";

我该怎么办?

最佳答案

使用 C++11,您可以通过 explicit operator bool 来做到这一点:

explicit operator bool() const {
    return !!*this;
}

如果您需要将对象显式转换为 bool(由 if 语句自动完成),则会调用此运算符。该实现通过在接收方对象上调用您的 operator ! 来工作,然后返回相反的结果。

希望这对您有所帮助!

关于c++ - 设计一个可以在 if 语句中测试的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11266550/

相关文章:

java - 如果用户输入不满足条件,则返回消息

c++ - 试图删除 vector C++ 中所有未定义的节点

c++ 函数在不使用模板的情况下采用任何数据类型?

c++ - 共享库中全局静态变量的析构函数未在 dlclose 上调用

带有多个 elseif 的 Javascript if 语句

c++ - 模板运算符重载函数上的 undefined symbol

swift - 在两个协议(protocol)对象上使用 equals

c++ - 创建一个 OS C++ 特定的 API

c++ - 我需要在此服务器模型中使用 boost::strand 吗?

linux - BASH : find fileX[1-20] in directory Y and look if fileX[1-20]. pid 存在