我正在尝试重载() operator
以接受long
,该代码位于下方。
struct print{
void operator()(long x){
printf("Number: %d\n",x);
}
};
但是当我写这篇文章时:
print p();
long l = 10;
p(l);
编译器在对应于p(l);
为什么这不起作用,我是否正确地重载了() operator
?
答案 0 :(得分:6)
你点击了most vexing parse。将print p();
更改为print p;
。
print p()
是名为p
的函数的声明,它返回一个打印对象。
此外,在C ++中,空参数列表表示不带参数的函数(与(void)
相同),这就是编译器抱怨的原因:“函数调用中的参数太多了。”