2

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

int a[4] = {9,10,11,20};
    if(a[3]== 20){
        cout <<"yes"<< endl;
    }

但是,当我创建一个类型类数组并尝试检查相等性时,我得到了错误;

Human 是一个具有私有变量的类,用于名称、年龄、性别等,并为这些变量获取和设置函数。

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'|

我可以传入索引和人类,并检查索引号。但是,有没有办法检查两个元素是否相同?我不想检查说“人名”和人名,因为在某些方面我的人没有名字。

4

2 回答 2

6

为了使语法

if(humanArray[i] == h)

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

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

在此函数中,您将对 和 进行逐个字段的比较,lhsrhs查看它们是否相等。从现在开始,每当您尝试使用==运算符比较任何两个人时,C++ 都会自动调用此函数为您进行比较。

希望这可以帮助!

于 2012-04-08T19:55:40.257 回答
0

您需要operator==为类 Human重载

bool operator== (const Human& left, const Human& right)
{
// perform comparison by each element in the class Human
}
于 2012-04-08T19:57:31.757 回答