1. ホーム
  2. c++

[解決済み】"Invalid operands to binary expression "エラーを修正する方法は?

2022-01-25 20:38:04

質問内容

私はc++の使用経験が浅く、コンパイラが以下のようなものを生成するところで行き詰っています。 バイナリ式のオペランドが無効

class Animal{
public:
    int weight;
};

int main(){
    Animal x, y;
    x.weight = 33;
    y.weight = 3;

    if(x != y) {
    // do something
     }
}

メインコードで (x.weight != y.weight) などのコードを修正せずに、x を使って y と比較したいのですが。この問題は、外部のクラスや定義からどのようにアプローチすればよいのでしょうか?

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

または、演算子のオーバーロードを非メンバーとして追加することができます。

#include <iostream>
using namespace std;

class Animal{
public:
    int weight;
};

static bool operator!=(const Animal& a1, const Animal& a2) {
    return a1.weight != a2.weight;
}

int main(){
    Animal x, y;
    x.weight = 33;
    y.weight = 3;

    if(x != y) {
        cout << "Not equal weight" << endl;
    } 
    else {
        cout << "Equal weight" << endl;
    }
}