繁体   English   中英

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

[英]Why member-of-pointer at operator() doesn't work?

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

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)()是要走的路。

抱歉,如果这很简短且无法令人满意,但如果您在这里寻找一些深刻的含义,我想您一定会感到失望!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM