c++ - 如何从类对象返回值?

标签 c++ class operator-overloading

是否可以让类对象返回真/假值,所以我可以这样做:

MyClass a;
...
if (a)
    do_something();

我可以通过重载 !运算符(operator):

class MyClass {
    ...
    bool operator!() const { return !some_condition; };
    ...
}

main()
    MyClass a;
    ...
    if (!a)
        do_something_different();

但我还没有找到一种方法来重载“空”运算符。当然,使用 == 运算符来检查 true/false 也是可以的,实际上这也是我到目前为止所做的。

最佳答案

重载 void * cast 运算符:

operator void * () const { return some_condition; };

这就是流的工作方式,允许您说:

if ( cin ) {
   // stream is OK
}

使用 void * 而不是 bool 可以防止在某些上下文中错误地使用强制转换,例如算术,这是不希望的。当然,除非您想在这些情况下使用它。

关于c++ - 如何从类对象返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3434240/

相关文章:

c++ - Box2d。如何查看 body 是否在坐标系中移动?

android - Onclick 通知,在 Android 中启动一个 Activity

Python 结构化——我真的需要一个类吗?

c++ - 无法在 C++ 中重载输出流

c++ - 虚拟多重继承和类型转换

c++ - MSVC 和 Clang 之间不一致的大括号或相等初始化行为

c++ - 在第一个可用索引处将对象设置为C数组

c++ - 创建一个指向类对象的线程

c++ - 如何将元素添加到 vector 的字符串位置

c++ - 使用 vector 作为索引实现对结构 vector 的访问