我在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;
答案 0 :(得分:29)
这意味着您的比较运算符需要为const
:
bool operator()( Vertex *lhs, Vertex *rhs) const
{ // ^^^^^
....
}
答案 1 :(得分:0)
此问题的原因之一是:
由于编译器一致性的改进或标准的更改,不再能干净地编译的代码。
您可以在此处了解更多信息: