Taking the Address of a Member Function

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;};

Share the Post:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: