表达式具有类型' const CompareVPtrs'为了打电话会丢失一些const-volatile限定符

时间:2013-11-06 15:32:39

标签: c++ stl

我在C ++中实现十五个益智控制台游戏,引发了以下错误

Error   4   error C3848: expression having type 'const CompareVPtrs' would lose some const-volatile qualifiers in order to call 'bool CompareVPtrs::operator ()(Vertex *,Vertex *)' c:\program files\microsoft visual studio 11.0\vc\include\xfunctional    324 1   puzzle15

这是我的结构

struct CompareVPtrs: public binary_function<Vertex*, Vertex*, bool>
{
    bool operator()( Vertex *lhs, Vertex *rhs)
    {
        return equal((int *)lhs->state, (int *)lhs->state+16,
            (int *)rhs->state);
    }
}
CompareVP;

完整的游戏源代码https://gist.github.com/sunloverz/7338003

2 个答案:

答案 0 :(得分:29)

这意味着您的比较运算符需要为const

bool operator()( Vertex *lhs, Vertex *rhs) const
{ //                                       ^^^^^
  ....
}

答案 1 :(得分:0)

此问题的原因之一是:

由于编译器一致性的改进或标准的更改,不再能干净地编译的代码。

您可以在此处了解更多信息: