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
Home » Tip Bank » C++
Language: C++
Expertise: Beginner
Apr 22, 1998

Pointers to member functions

Question:
I am having lots of trouble calling a class member function pointer that is declared within the same class. So far the following compiles:

class testClass {

public:
	void (testClass::*ptr)();
	testClass();	// constructor
private:
	void testFunc();
}

testClass:testClass() {
	ptr = &(testClass::testFunc);
};
Now I cannot find a way of calling this function pointer from outside the object:

void main() {

	testClass test;

	test.*ptr();  // ERROR: does not compile
}
I would be very grateful if you could give some assistance.

Answer:
Most pointer-to-member variables are not actually members of a class. For example, you might do something like this:

void (testClass::*ptr2)();
ptr2 = &(testClass::testFunc);
(test.*ptr2)();
This code declares a pointer-to-member variable called ptr2 that is not part of the class it references. However, this doesn't work in your case because testFunc is a private member. The thing to realize is that, in the line:
(test.*ptr2)();
ptr2 is a separate variable. In your case, however, ptr is actually a class member. Therefore, you need additional work to specify the scope for ptr:
(test.*(test.ptr))();
Not a pretty sight. But, then again, pointer-to-member variables never have been.
DevX Pro
 
Comment and Contribute

 

 

 

 

 


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

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date