为了在一个简单的数组中检查相等性,我有以下内容;
int a[4] = {9,10,11,20};
if(a[3]== 20){
cout <<"yes"<< endl;
}
但是,当我创建一个类型为class的数组,并尝试检查是否相等时,会出现错误;
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,然后检查索引号。但是,有没有一种方法可以检查两个元素是否相同?我不希望将“人名”与人名对照,因为在某些地方我的人不会有名字。
最佳答案
为了使语法
if(humanArray[i] == h)
合法,则需要为您的人类类定义
operator==
。为此,您可以编写一个如下所示的函数:bool operator== (const Human& lhs, const Human& rhs) {
/* ... */
}
在此函数中,您将对
lhs
和rhs
进行逐字段比较,以查看它们是否相等。从现在开始,每当您尝试使用==
运算符比较任何两个人类时,C++都会自动调用此函数来进行比较。希望这可以帮助!