Error with address of parenthesized member function

后端 未结 2 496
刺人心
刺人心 2020-11-29 07:31

I found something interesting. The error message says it all. What is the reason behind not allowing parentheses while taking the address of a non-static member function? I

2条回答
  •  独厮守ぢ
    2020-11-29 07:50

    From the error message, it looks like you're not allowed to take the address of a parenthesized expression. It's suggesting that you rewrite

    fPtr = &(myfoo::foo);  // main.cpp:14
    

    to

    fPtr = &myfoo::foo;
    

    This is due to a portion of the spec (§5.3.1/3) that reads

    A pointer to member is only formed when an explicit & is used and its operand is a qualified-id not enclosed in parentheses [...]

    (my emphasis). I'm not sure why this is a rule (and I didn't actually know this until now), but this seems to be what the compiler is complaining about.

    Hope this helps!

提交回复
热议问题