我有一个像这样的函子
class PrintParentheses
{
public:
PrintParentheses(unsigned pairsCount)
{}
void operator ()() {}
};
在
main()
内部,我正在使用它,#include <iostream>
int main()
{
unsigned pairsCount = 0;
// Error: ‘PrintParentheses pairsCount()’ redeclared as different kind of symbol
PrintParentheses(pairsCount)();
PrintParentheses(5)(); // But this works
}
错误位置标记在代码本身内。我已经测试了
GCC-4.6
和clang-3.1
。两者都给出相同的错误。 最佳答案
可以将其读取为PairsCount是一个不带任何参数并返回PrintParentheses的函数。由于所谓的“最烦人的解析”,因此必须将其视为函数声明。而是创建一个对象并使用它:
PrintParentheses obj(pairsCount);
obj();