From: "Joe Hagen" Newsgroups: comp.os.msdos.djgpp Subject: Re: calling a pointer to a function Date: Wed, 10 Nov 1999 09:45:41 -0600 Organization: IntraNet Inc: Madison, Wisconsin's ISP Lines: 106 Sender: reguser AT a33-17 DOT madison DOT chorus DOT net Message-ID: <80c40b$268$1@news.chorus.net> References: <382917AA DOT 256A0891 AT home DOT com> NNTP-Posting-Host: a33-17.madison.chorus.net X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2314.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2314.1300 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com Robin, There are two ways to do this. If you need to do this in regular "C" style, the first example declares PFVI as a pointer to a void function taking an int. In the second example, the PFEXVI typedef is a pointer to a member function of class Ex that returns void and takes an int. EXAMPLE 1: ====================================================== #include typedef void (*PFVI)(int); void do1(int n) { printf("in do1 n=%d\n",n); } void do2(int n) { printf("in do2 n=%d\n",n); } void callone(PFVI f) { f(1); } int main(void) { callone(do1); return 0; } ==================================================== EXAMPLE 2: ==================================================== #include class Ex { typedef void (Ex::*PFEXVI)(int); public: void show(void); private: void do1(int n); void do2(int n); void callone(PFEXVI); }; void Ex::do1(int n) { std::cout << "in do1 n= " << n << std::endl; } void Ex::do2(int n) { std::cout << "in do2 n= " << n << std::endl; } void Ex::callone(PFEXVI f) { (this->*f)(1); } void Ex::show(void) { callone(&Ex::do1); callone(&Ex::do2); } int main(void) { Ex a; a.show(); return 0; } Joe jdhagen AT chorus DOT net Robin Johnson wrote in message news:382917AA DOT 256A0891 AT home DOT com... > Hi, > > I used to do something in Pascal, and i was wondering what the C++ > conversion of it was: > {begin pascal code} > Type tProc = Procedure(Num : integer);