次の構造体の 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 */
}