Login | Register   
LinkedIn
Google+
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Beginner
Nov 14, 2000

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;};
DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap