C2678二进制'==':找不到使用'Card'类型的左操作数的运算符(或者没有可接受的转换)

时间:2018-10-15 02:06:40

标签: c++ c++11 find

我遇到了由抢七局引起的上述错误

#include <vector>
#include <iostream>
#include <algorithm>

class Hand{
private:
std::vector<Card> cards;
public:
  PokerHand(Card c1, Card c2) {
      cards.push_back(c1);
      cards.push_back(c2);
      cards.push_back(c3);
      cards.push_back(c4);
      cards.push_back(c5);
  }
bool breakTie(const PokerHand& other) const{
    std::vector<Card> temp1 = { cards };
    std::vector<Card> temp2 = { other.getCards()};
    return std::find(temp1.begin(), temp1.end(), 2) <    std::find(temp2.begin(), temp2.end(), 2)
}
std::vector<Card> getCards(){
    return cards;
}
};

class Card{
private:
    int value;
public:
    bool operator ==(const Card& right)const {
        return (this->value == right.getValue());
    }
    int getValue(){
        return value;
    }
    Card(int value){
        this->value=value;
    }
};

int main(){
    Card a(4);
    Card b(5);
    Hand hand(a,b);
    hand.breakTie();
    return 0;
}

据我了解,该错误表示我正在尝试更改const变量。我不明白的是我如何更改const变量?

非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您正在find的矢量Card上用整数2调用2。由于Card不是Card,也没有得到explicit的构造函数,该构造函数采用一个可以使用的整数参数(要么没有,要么没有存在标记为Card)。

您需要(向编译器)说明您要寻找的内容。什么是private void AddProductsTabbedPanel() { string queryString = @"SELECT VALUE P FROM Tblproducts as P"; foreach (TabPage tp in tabControl1.TabPages) { ObjectContext context = ((IObjectContextAdapter)cse).ObjectContext; ObjectQuery<TblProduct> filteredproduct = new ObjectQuery<TblProduct>(queryString, context); foreach (TblProduct tprod in filteredproduct) { Button b = new Button(); b.Text = tprod.Description; tp.Controls.Add(b); } } } 2?