/ /条件のオペランドとして構造体を使用する方法は? -C ++、C ++ 11、構造体、演算子オーバーロード、条件付き

条件のオペランドとして構造体を使用する方法は? - C ++、C ++ 11、構造体、演算子オーバーロード、条件付き

C ++ 11に単純な構造体があります

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

この構造体をスカラー型そのものであるかのように使用したいので、すべての演算子をオーバーロードしました。

定義できない方法の1つは、ifステートメントでの構造体の使用です。

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

この動作を有効にするためにオーバーロードできる演算子はありますか?標準的な動作が必要です。構造体のいずれかのビットが1の場合は「true」、そうでない場合は「false」です。

回答:

回答№1は16

明示的なブール変換を追加します。

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

int a;
int b;
int c;
// ...
};