C ++ локальный класс как функтор
Я пытаюсь использовать локальный класс в качестве функтора и получить ошибку компилятора с помощью g ++ (3.4.6).
Размещение ниже класса (Processor
) в глобальной области видимости устраняет ошибку, поэтому я предполагаю, что ошибка происходит из-за функции локальных структур / классов. Я бы предпочел иметь классы внутри функции для ясности кода и простоты использования. Хотите узнать, есть ли обходное решение, чтобы сделать приведенный ниже код работающим.
test.cpp: 24: ошибка: нет соответствующей функции для вызова \ u2018foreachArg (int &, char* &, processSubs (int, char *) :: Процессор и) \ u2019
template <class Functor>
void foreachArg(int n, char *args[], Functor& f)
{
for(int i=0; i<n; ++i)
f(args[i]);
}
int processSubs(int argc, char *args[])
{
class Processor
{
public:
void operator()(const char *arg)
{
}
};
Processor p;
foreachArg(argc, args, p);
}
int main(int argc, char *argv[])
{
processSubs(argc, argv);
}