C++ 正确写入引用的比较运算符

C++ 正确写入引用的比较运算符,c++,reference,pass-by-reference,C++,Reference,Pass By Reference,我有密码: #include <vector> #define DECK_SIZE 52 struct Card { int Value; int Suit; bool operator == (Card &c1) { return ((Value == c1.Value) && (Suit == c1.Suit)); } }; typedef std::vector<Card> hand_t

我有密码:

#include <vector>

#define DECK_SIZE 52

struct Card {
    int Value;
    int Suit;

    bool operator == (Card &c1) {
        return ((Value == c1.Value) && (Suit == c1.Suit));
    }
};

typedef std::vector<Card> hand_t;

bool IsCardInHand(const Card & checkCard, const hand_t & hand)
{
    for (int i = 0; i < static_cast<int>(hand.size()); ++i) {
        if (checkCard == hand[i]) {
            return true;
        }
    }

    return false;
}
#包括
#定义甲板尺寸52
结构卡{
int值;
内服;
布尔运算符==(卡和c1){
返回((Value==c1.Value)和&(Suit==c1.Suit));
}
};
typedef std::矢量指针;
bool IsCardInHand(恒量卡和支票卡、恒量手和手)
{
对于(int i=0;i
< P> >此行:“代码>(Cabrabd=手下[i])< /> >产生错误:<代码>智能操作:无操作符”=“匹配智能操作的这些操作数< /C>”和“代码>错误C2678:二进制'= = ':没有找到操作员,它使用编译器的“const卡”(或没有可接受的转换)的< /代码>(Visual C++ 2010)的左操作数。

请帮助,我如何才能正确重写
运算符==

您需要的(注意常量):

您需要(注意常量):


谢谢:-)这是显而易见的,我的漏脑:(这是我所在地区的早晨,所以你可以以此为借口。)谢谢:-)这是显而易见的,我的漏脑:(这是我所在地区的早晨,所以你可以以此为借口。)请注意,一旦你修复了
操作符==
,你就可以重写
IsCardInHand()
to just be
return std::find(hand.begin(),hand.end(),checkCard)!=hand.end()请注意,一旦修复了
运算符==
,您就可以将
IsCardInHand()
重写为
return std::find(hand.begin(),hand.end(),checkCard)!=hand.end()
bool operator == (const Card &c1) const {