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