我尝试将本地类作为函数对象使用,在使用g++(3.4.6)时出现编译器错误。
将下面的类(Processor
)放在全局范围内解决了该错误,因此我猜测是因为函数局部结构/类导致的错误。我希望将类放在函数内以便于代码清晰和使用方便。想知道是否有解决方法使得下面的代码能够正常工作。
test.cpp:24: error: no matching function for call to \u2018foreachArg(int&, char*&, processSubs(int, char*)::Processor&)\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);
}