2010-04-04 3 views
1

Вот мой код, который не удается:Вызов метода постоянного параметра объекта

bool Table::win(const Card &card) { 
    for (int i = 0; i < cards.size(); i++) 
     if (card.getRank() == cards[i].getRank()) return true; 

    return false; 
} 

Сообщения об ошибке является: передача «константные карт», как «это» аргумент «ИНТ карты :: getRank()» Отбрасывает классификаторы.

Когда я получить копию карты и изменить код, чтобы это работает:

bool Table::win(const Card &card) { 
    Card copyCard = card; 

    for (int i = 0; i < cards.size(); i++) 
     if (copyCard.getRank() == cards[i].getRank()) return true; 

    return false; 
} 

Есть ли другой способ сделать это?

+0

Можете ли вы опубликовать' Card'-объявление класса –

ответ

10

Is getRank a const-method? Он должен быть объявлен как это ":

int getRank() const; 

Предполагая, что тип возвращаемого значения INT

+0

К сожалению, я не предоставить эту информацию нет,.?. это не так. – pocoa

+0

Хорошо, это работает. Спасибо, но я не совсем понял, почему .. – pocoa

+0

Итак, если я передаю объект как постоянную переменную, должен ли я объявлять все его методы постоянными? – pocoa

Смежные вопросы