为什么函数调用运算符不与指针成员运算符一起使用?
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)()
是要走的路。
对不起,如果这是短暂和不充实的,但如果你在这里寻找一些深刻的含义,我想你一定会失望的!