为了检查一个简单数组中的相等性,我有以下内容;
int a[4] = {9,10,11,20};
if(a[3]== 20){
cout <<"yes"<< endl;
}
但是,当我创建一个类型类的数组,并尝试检查相等时,我得到错误;
人类是一个具有名称,年龄,性别等私人变量的类 获取并设置这些变量的函数。
humanArray的大小为20
void Animal::allocate(Human h){
for (int i =0; i<20; i++){
if(humanArray[i] == h){
for(int j = i; j<size; j++){
humanArray[j] = humanArray[j +1];
}
}
}
}
我收到以下错误;
error: no match for 'operator==' in '((Animal*)this)->Animal::humanArray[i] == h'|
我可以传入索引和Human,并检查索引号。但是,有没有办法检查两个元素是否相同?我不想检查说出人类名字的“人名”,因为对于某些部分,我的人类没有名字。
答案 0 :(得分:6)
为了制作语法
if(humanArray[i] == h)
合法,您需要为您的人类定义operator==
。为此,您可以编写一个如下所示的函数:
bool operator== (const Human& lhs, const Human& rhs) {
/* ... */
}
在此功能中,您将对lhs
和rhs
进行逐字段比较,以确定它们是否相等。从现在开始,只要您尝试使用==
运算符比较任意两个人,C ++就会自动调用此函数进行比较。
希望这有帮助!
答案 1 :(得分:0)
您需要为类Human
重载operator==
bool operator== (const Human& left, const Human& right)
{
// perform comparison by each element in the class Human
}