C2678 бинарный '==': не найден оператор, который принимает левый операнд типа 'Card' (или нет приемлемого преобразования) - PullRequest
0 голосов
/ 15 октября 2018

Я получаю вышеуказанную ошибку, вызванную функцией прерывания связи

#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 голосов
/ 15 октября 2018

Вы звоните find на вектор Card с целым числом 2.Вы получаете эту ошибку, потому что 2 не является Card, и при этом нет никакого конструктора для Card, который принимает один целочисленный параметр, который может быть использован (либо его нет, либо тот, который существует, помечен explicit).

Вам необходимо уточнить (для компилятора), что именно вы ищете.Что такое Card 2?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...