我试图使用本地类作为函子并使用g ++(3.4.6)获得编译器错误.
将下面的class(Processor
)放在全局范围内可以解决错误,所以我猜错误是因为函数本地结构/类.我更喜欢在函数内部使用类,以实现代码清晰度和易用性.想知道是否有解决方法使下面的代码有效.
test.cpp:24:错误:没有匹配函数来调用\ 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);
}
Run Code Online (Sandbox Code Playgroud)
在C++中,在C++ 11之前,用作模板函数参数的类必须具有外部链接.本地类没有外部链接,因此您不能以这种方式使用它们.
C++ 11对此进行了更改,因此您可以通过将编译器设置为使用C++ 11来解决此问题.
归档时间: |
|
查看次数: |
1232 次 |
最近记录: |