为什么 operator() 处的指针成员不起作用?



为什么函数调用运算符不与指针成员运算符一起使用?

struct F
{
void operator()(){}
};
int main()
{
F * f = new F;
f->();   // Why this doesn't compile?
}

我猜C++神只是认为语法太晦涩难懂了。正确的语法是:

f->operator()();

或:

(*f)()

如果->运算符没有重载,那么f->大致等同于(*f).(*f).()也不编译,则必须使用:

(*f).operator()();

您应该将其称为f->operator()()(*f)()

我认为没有任何具体原因。

->.都希望成员的姓名跟随,而您尚未提供。

只是没有必要在语法中创建特殊情况来允许这样做。这已经够复杂的了!

(*f)()是要走的路。

对不起,如果这是短暂和不充实的,但如果你在这里寻找一些深刻的含义,我想你一定会失望的!

最新更新