函数调用操作符重载的参数太多

时间:2013-12-03 02:57:32

标签: c++ syntax struct functor

我正在尝试重载() operator以接受long,该代码位于下方。

struct print{
    void operator()(long x){
        printf("Number: %d\n",x);
    }
};

但是当我写这篇文章时:

print p();
long l = 10;
p(l);

编译器在对应于p(l);

的行上大喊“错误:函数调用中的参数太多”

为什么这不起作用,我是否正确地重载了​​() operator

1 个答案:

答案 0 :(得分:6)

你点击了most vexing parse。将print p();更改为print p;

print p()是名为p函数的声明,它返回一个打印对象。

此外,在C ++中,空参数列表表示不带参数的函数(与(void)相同),这就是编译器抱怨的原因:“函数调用中的参数太多了。”

相关问题