10

我正在用 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

4

2 回答 2

39

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

bool operator()( Vertex *lhs, Vertex *rhs) const
{ //                                       ^^^^^
  ....
}
于 2013-11-06T15:34:12.687 回答
0

此问题的原因之一是:

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

你可以在这里读更多关于它的内容:

于 2020-08-22T12:06:18.940 回答