Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling a method of a constant object parameter

Here is my code that fails:

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

   return false;
}

Error message is: passing 'const Card' as 'this' argument of 'int Card::getRank()' discards qualifiers.

When I get a copy of the card and change the code to this it works:

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;
}

Is there any other way to do this?

like image 483
pocoa Avatar asked Dec 07 '22 03:12

pocoa


1 Answers

Is getRank a const-method? It should be declared like this":

int getRank( ) const;

Assuming the return type is int.

like image 62
Björn Pollex Avatar answered Dec 09 '22 18:12

Björn Pollex