C++ で構造体を比較しているときに == 演算子が見つかりません [重複] 質問する

C++ で構造体を比較しているときに == 演算子が見つかりません [重複] 質問する

次の構造体の 2 つのインスタンスを比較すると、エラーが発生します。

struct MyStruct1 {
    MyStruct1(const MyStruct2 &_my_struct_2, const int _an_int = -1) :
        my_struct_2(_my_struct_2),
        an_int(_an_int)
    {}

    std::string toString() const;

    MyStruct2 my_struct_2;
    int an_int;
};

エラーは次のとおりです:

エラー C2678: バイナリ '==': 'myproj::MyStruct1' 型の左側のオペランドを取る演算子が見つかりません (または許容される変換がありません)

なぜ?

ベストアンサー1

C++ では、structデフォルトで生成される比較演算子はありません。独自の演算子を記述する必要があります。

bool operator==(const MyStruct1& lhs, const MyStruct1& rhs)
{
    return /* your comparison code goes here */
}

おすすめ記事