1. ホーム
  2. c++

[解決済み] C++で構造体を比較する際に==演算子が見つからない

2022-05-18 05:38:44

質問

以下の構造体の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;
};

エラーは

error C2678: 二項演算子 '==' : 左辺の演算子を取る演算子がありません。 左側のオペランドを取る演算子が見つかりませんでした。 タイプ 'myproj::MyStruct1' の左側のオペランドを取る演算子が見つかりません。 許容できる変換がない)

なぜですか?

どのように解決するのですか?

C++の場合。 struct には、デフォルトで生成される比較演算子がありません。自分で書く必要があります。

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