выражение, имеющее тип "const CompareVPtrs", потеряет некоторые квалификаторы const-volatile для вызова

я реализую пятнадцать консольных игр-головоломок на 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 filesmicrosoft visual studio 11.0vcincludexfunctional    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

1 ответов


Это означает, что ваш оператор сравнения должен быть const:

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