Ik heb geen ervaring met het gebruik van c++ en zit vast op het punt waar de compiler ongeldige operanden voor binaire expressie genereert
class Animal{
public:
int weight;
};
int main(){
Animal x, y;
x.weight = 33;
y.weight = 3;
if(x != y) {
// do something
}
}
Ik wil x gebruiken en vergelijken met y, zonder de code te wijzigen, d.w.z. (x.weight != y.weight) in de hoofdcode. Hoe moet ik dit probleem benaderen vanuit een externe klasse of definitie?
Antwoord 1, autoriteit 100%
Als alternatief kunt u de overbelasting van de operator toevoegen als niet-lid:
#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;
}
}
Antwoord 2, autoriteit 100%
Zoals gesuggereerd in de opmerkingen, moet u bijvoorbeeld de operator !=
overbelasten
class Animal{
public:
int weight;
bool operator!=(const Animal &other)
{
return weight != other.weight;
}
};
Een uitdrukking x != y
is als een functieaanroep naar deze operator, in feite is het hetzelfde als x.operator!=(y)
.
p>