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;
// ...
};