Как передать сортировать предикат, являющийся функцией-членом, из конструктора

У меня есть следующий код:

template <class T>
class GenericGeneticSolver
{
public:
    GenericGeneticSolver(IGenticSolverHelper<T>& helper, int generationSize) : mSolverHelper(helper), mGenerationSize(generationSize)
    {
        mCurrentGeneration.resize(mGenerationSize);
        for(int i=0;i<mGenerationSize;i++)
        {
            mSolverHelper.GenerateRandomSolution(mCurrentGeneration[i]);
        }

        sort(mCurrentGeneration.begin(),mCurrentGeneration.end(), solutionComparer);
    }
    void Evolve(int numberOfGenerations = 1)
    {
        //sort(mCurrentGeneration.begin(),mCurrentGeneration.end(), solutionComparer);
    }
private :
    int mGenerationSize;
    vector<T> mCurrentGeneration;
    IGenticSolverHelper<T>& mSolverHelper;

    bool solutionComparer (T first,T second) { return (mSolverHelper.Cost(first)<mSolverHelper.Cost(second)); }
};

вconstructor Я заполняю вектор членами, а затем пытаюсь отсортировать этот вектор, передавая предикатSort функция, предикат является функцией-членом, называемой "solutionComparer.

К сожалению, он не компилируется, компилятор недоволен использованием указателя на функции-члены в конструкторе, я пробовал ту же строку в функции "Evolve", и он компилируется.

Я получаю ошибку:

error C3867: 'GenericGeneticSolver<T>::solutionComparer': function call missing argument list; use '&GenericGeneticSolver<T>::solutionComparer' to create a pointer to member

Я попытался сделать то, что предложила ошибка, но она также не скомпилировалась (какая-то случайная ошибка в функции сортировки).

Почему я не могу использовать указатель на функцию-член в конструкторе?

Ответы на вопрос(3)

Ваш ответ на вопрос