调用常量对象参数的方法

poc*_*coa 1 c++ reference constants function

这是我的代码失败:

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

   return false;
}
Run Code Online (Sandbox Code Playgroud)

错误信息是:将'const Card'作为'int Card :: getRank()的'this'参数传递,丢弃限定符.

当我得到卡的副本并将代码更改为此时,它可以正常工作:

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;
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以做到这一点?

Bjö*_*lex 12

getRankconst方法吗?它应该被声明为":

int getRank( ) const;
Run Code Online (Sandbox Code Playgroud)

假设返回类型为int.

  • 阅读本文以了解有关const的更多信息:http://www.parashift.com/c++-faq-lite/const-correctness.html (3认同)
  • @pocoa - 如果方法不修改实例,它应该是一个`const`方法.这允许在`const`实例上调用该方法. (3认同)
  • @JamesWierzba谢谢,显然这已移到另一个位置,现在链接是:https://isocpp.org/wiki/faq/const-correctness. (2认同)