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

Nei*_*etz 0 c++ syntax struct functor

我试图重载() operator接受a long,代码在下面.

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

但是,当我这样写:

print p();
long l = 10;
p(l);
Run Code Online (Sandbox Code Playgroud)

编译器在对应的行上大喊"错误:函数调用中的参数太多" p(l);

为什么这不起作用,我() operator是否正确超载?

Jes*_*ood 6

你找到了最令人烦恼的解析.更改print p();到print p;.

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

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