[英]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.