Je n'ai aucune expérience de l'utilisation de c ++ et je suis bloqué au point où le compilateur génère opérandes invalides pour l'expression binaire
class Animal{
public:
int weight;
};
int main(){
Animal x, y;
x.weight = 33;
y.weight = 3;
if(x != y) {
// do something
}
}
Je veux utiliser x et comparer avec y, sans modifier le code, c'est-à-dire (x.weight! = Y.weight) dans le code principal. Comment dois-je aborder ce problème à partir d'une classe ou d'une définition externe?
Vous pouvez également ajouter la surcharge de l'opérateur en tant que non-membre:
#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;
}
}
Comme suggéré dans les commentaires, vous devez surcharger l'opérateur !=
, Par exemple
class Animal{
public:
int weight;
bool operator!=(const Animal &other)
{
return weight != other.weight;
}
};
Une expression x != y
Est comme un appel de fonction à cet opérateur, en fait c'est la même chose que x.operator!=(y)
.