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++ - Qpid 质子 C++ - 质子::make_work

iterator - CUDA Thrust sort_by_key 当键是由 zip_iterator 用自定义比较谓词处理的元组时

perl - 为什么 perl 解析 $x | $y | $z 作为 $z | ($x | $y)?

Dropbox 和 GData API 中的 IOS 重复类 JSON

python - 在 python 中从列表中删除类实例有困难

c++ - 通过不返回引用来防止下标运算符赋值会导致运行时崩溃

c++ - OpenGL 跨平台窗口

c++ - 如何从对象的数据成员构造一个 std::set 或 Boost flat_set?

c++ - 用于处理的大数据集,需要维护原始数据集

php - 使用命名空间访问扩展类中的 $this