如何使用结构体作为条件语句的操作数

How to use a struct as an operand of a conditional?

本文关键字:语句 操作数 条件 何使用 结构体      更新时间:2023-10-16

我在c++ 11中有一个简单的结构

struct a {
    int a;
    int b;
    int c;
    ....
}

我想把这个结构体当作一个标量类型来使用,所以我重载了所有的操作符。

我找不到如何定义的一个行为是在if语句中使用结构体:

a v = {1,2,3};
if (v) { }

是否有一个操作符,我可以重载以启用此行为?我想要标准的行为:如果任何位是1在结构体它是真,否则它是假的。

添加一个显式布尔转换:

struct a
{
    explicit operator bool() const
    {
        return a || b || c;
    }
    int a;
    int b;
    int c;
    // ...
};