From: hhkraemer AT web DOT de (Horst Kraemer) Newsgroups: comp.os.msdos.djgpp Subject: Re: How would I build a pointer to a method of my class Date: Sun, 08 Apr 2001 10:38:43 GMT Lines: 94 Message-ID: <3ad03a62.57917390@news.cis.dfn.de> References: <9apab3$mo7$1 AT bird DOT wu-wien DOT ac DOT at> NNTP-Posting-Host: a0079.pppool.de (213.6.0.121) X-Trace: fu-berlin.de 986726306 6531547 213.6.0.121 (16 [27606]) X-Newsreader: Forte Free Agent 1.21/32.243 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com On Sun, 8 Apr 2001 11:16:25 +0200, "Wormy" wrote: > Hello all! > > In simple C, I would do something like this: > > > ------------------------------------------- > typedef void (My_func)(short parameter); > > My_func Pointer_to_My_func; > ------------------------------------------- > > and then, later in my code (DOTHIS_func and DOTHAT_func are declared and > defined somewhere) > > ------------------------------------------- > if (i == 0) > Pointer_to_My_func = DOTHIS_func; > else > Pointer_to_My_func = DOTHAT_func; > > (*Pointer_to_My_func)(parameter_to_pass); > ---------------------------------------------- > > OK.... but now, how am I doing it in C++ if I'm fumbling around with a > class? > > ------------ > class CMy_class > { > void DOTHIS_method(short parameter); > void DOTHAT_method(short parameter); > > void ANOTHER_method(); > }; > > CMy_class My_class; > -------------------------------- > > And, in the method ANOTHER_method() I would like to set the pointer to one > of the two methods above (as I did it in C)... BUT I DON'T HAVE ANY IDEA > HOW! I wrote down a simple pseudocode below. > (NOTE: DOTHIS_method and DOTHAT_method are all methods of the same class) > > ------------------------------- > void ANOTHER_method() > { > . > . > . > > if (i == 1) > pointer should point to DOTHIS_method; > else > pointer should point to DOTHAT_method; > > and now call the method my pointer is pointing to > > . > . > . > } > ----------------------------- > > Can someone please give me a hint? BTW I am using VISUAL C++ 6.0 if this > problem couldn't be solved in "ANSI" C++ class CMy_class { void DOTHIS_method(short parameter); void DOTHAT_method(short parameter); typedef void (CMy_class::*PMF) (short); public: void ANOTHER_method(); }; void CMy_class::ANOTHER_method(short) { PMF pmf; pmf = &CMy_class::DOTHIS_method; (this->*pmf)(42); } This is ANSI C++ and supported by MSVC++ (and gcc of course). Regards Horst