delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/11/10/11:31:20

From: "Joe Hagen" <jdhagen AT chorus DOT net>
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 <stdio.h>

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 <iostream>

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 <robbat2 AT home DOT com> 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);



- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019