簡體   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