检查Array中元素的相等性 - c ++

时间:2012-04-08 19:50:28

标签: c++ arrays equals

为了检查一个简单数组中的相等性,我有以下内容;

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,并检查索引号。但是,有没有办法检查两个元素是否相同?我不想检查说出人类名字的“人名”,因为对于某些部分,我的人类没有名字。

2 个答案:

答案 0 :(得分:6)

为了制作语法

if(humanArray[i] == h)

合法,您需要为您的人类定义operator==。为此,您可以编写一个如下所示的函数:

bool operator== (const Human& lhs, const Human& rhs) {
   /* ... */
}

在此功能中,您将对lhsrhs进行逐字段比较,以确定它们是否相等。从现在开始,只要您尝试使用==运算符比较任意两个人,C ++就会自动调用此函数进行比较。

希望这有帮助!

答案 1 :(得分:0)

您需要为类Human

重载operator==
bool operator== (const Human& left, const Human& right)
{
// perform comparison by each element in the class Human
}