Question:
class a;typedef void(a::*func)();class a{protected: int x;public: func f; void fg(){f=&a::as;}; void as();};
This code compiles in Visual C++6.0. However, Borland C 3.1 gives me the following error at line”void fg(){f=as;};”: “member function must be called or its address must be taken”.I don’t understand why.
Answer:
According to standard C++, the name of a member function isn’t implicitly converted to its address. In this regard, member functions and ordinary functions differ. Try to change the definition of fg() to the following:
void fg(){f=&a::as;};