【问题标题】:Const error with this [closed]与此相关的 const 错误[关闭]
【发布时间】:2018-04-10 15:38:24
【问题描述】:

这是我的代码:

bool State::operator==(const State& s) const
{
    bool flag=true;
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            if(s.GetboardEl(i,j)!=board[i][j]){
                flag=false;
            }
        }
    }
    return flag;
}

getBoardEl 是 State 类中的一个函数,它从 board(int[][]) 返回一个元素。即使我在括号({)之前使用 const 我也会收到此错误 :

错误:将 'const State' 作为 'int State::GetboardEl(int, int)' 的 'this' 参数传递会丢弃限定符 [-fpermissive]|

【问题讨论】:

  • 显示完整代码...如果你不显示它,我们如何判断你是否正确调用GetboardEl()
  • int State::GetboardEl(int, int) 更改为int State::GetboardEl(int, int) const
  • @PaulR 似乎工作了谢谢
  • @JJohnarios:太好了 - 确保您了解为什么需要 const,这样以后就不会再让您失望了。

标签: c++ constants


【解决方案1】:

成员函数getBoardEl 似乎是非const 成员函数。

您绝对应该将其更改为 const 成员函数,因为顾名思义,它是 get 函数而不是 set 函数。

这将解决编译器错误。

解决错误的另一种方法是直接使用成员变量,就像 this 一样。

if ( s.board[i][j] != this->board[i][j] ) {

【讨论】:

    猜你喜欢
    • 2015-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多