• 締切済み

C++で構造体のコピーはできても == や != で比較はできないので

C++で構造体のコピーはできても == や != で比較はできないのでしょうか? struct ST { int a; int b[10]; }; ST a; ST b; a = b; // エラーなし if (a != b) {      // エラーあり printf("違います"); }

みんなの回答

回答No.3

一例まで。 #include <stdio.h> #include <memory.h> struct ST { public: int a; int b[10]; public: bool operator == (struct ST obj) { if (this->a == obj.a) { if (memcmp(this->b, obj.b, sizeof(this->b)) == 0) { return(true); } } return(false); } bool operator != (struct ST obj) { if (this->a == obj.a) { if (memcmp(this->b, obj.b, sizeof(this->b)) == 0) { return(false); } } return(true); } }; void main() { struct ST sa, sb; int i; sa.a = 1; for (i = 0; i < 10; i++) { sa.b[i] = i; } sb.a = 1; for (i = 0; i < 10; i++) { sb.b[i] = i; } if (sa == sb) { printf("\nsa == sb\n"); } if (sa != sb) { printf("\nsa != sb\n"); } }

すると、全ての回答が全文表示されます。
  • ohtawa
  • ベストアンサー率23% (9/38)
回答No.2

演算子のオーバロードを定義してつかう方法もあります 説明すると長くなるので C++の本をごらんになられるとよいでしょう 柴田望洋さんの本に具体的なやりかたが載っています クラスでしかやったことないので 構造体をクラスとして定義しなおす必要があるかどうかは わかりません

すると、全ての回答が全文表示されます。
  • Yanch
  • ベストアンサー率50% (114/225)
回答No.1

C++ なら、operator をオーバーライドすれば、出来るはずですよ。

すると、全ての回答が全文表示されます。

関連するQ&A