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