Вы не можете получить доступ к локальным переменным функции изнутри локальной функции - C ++ в ее текущей форме не допускает замыкания . Следующая версия языка, C ++ 0x, будет поддерживать это, но языковой стандарт еще не доработан, и в настоящий момент мало поддерживается текущий черновой стандарт.
Чтобы это работало, вы должны изменить третий параметр std::sort
на экземпляр объекта вместо функции. Третьим параметром std::sort
может быть все, что можно вызвать (т. Е. Любой x
, где добавление скобок, таких как x(y, z)
, имеет синтаксический смысл). Лучший способ сделать это - определить структуру, которая реализует функцию operator()
, а затем передать экземпляр этого объекта:
struct Local {
Local(int paramA) { this->paramA = paramA; }
bool operator () (int i, int j) { ... }
int paramA;
};
sort(v.begin(), v.end(), Local(paramA));
Обратите внимание, что мы должны хранить paramA
в структуре, так как мы не можем получить к ней доступ изнутри operator()
.