🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.c++
Article #124

Re: Como pasar un puntero a función miembro como parametro de otra función

#124
From: Pascal J. Bourguignon
Date: Tue, 07 Oct 2008 12:44
45 lines
2394 bytes
jrbcast@gmail.com writes:

> Hola,
>
> Tengo el siguiente problema:
>
> class A
> {
>     double ejemplo(double *p)
>     {
>        return do_job(p+1);
>     }
> }
>
> Ahora resulta que otra funci�n de externa a esta clase toma como
> par�metro un
> puntero a una funci�n, m�s concretamente:
>
> void foo( double(*f)(double* x) )
>
> Me gustar�a pasar el m�todo "ejemplo" como argumento a la funci�n foo.
> �C�mo lo puedo hacer?.
>
> Gracias de antemano.

Habr�a:

    std::mem_fun_ptr(&A::ejemplo)

pero eso no te daria una funcion double(double*), porque una funcion
miembro toma tambien el parametro 'this'.


Tendras que usar boost::bind:

    foo( boost::bind(A::ejemplo,this,_1) )

o:

    foo( boost::bind(A::ejemplo,alguno_objeto_de_clase_A,_1) )



-- 
__Pascal Bourguignon__
Technical Details
Message-ID: <7cmyhg4ls4.fsf@pbourguignon.anevia.com>
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!proxad.net!feeder1-2.proxad.net!cleanfeed3-b.proxad.net!nnrp19-2.free.fr!not-for-mail
References: <4a22be7f-4b21-495b-91da-271ee842ded1@k7g2000hsd.googlegroups.com>

Show Full Headers
Complete Article Headers
X-Google-Thread: f53ec,7827fb6d5a442b8e
X-Google-Attributes: gidf53ec,domainid0,public,usenet
X-Google-Language: SPANISH,ASCII
Path: arc1-ca.pugleaf.net!g2news1.google.com!news4.google.com!proxad.net!feeder1-2.proxad.net!cleanfeed3-b.proxad.net!nnrp19-2.free.fr!not-for-mail
Newsgroups: es.comp.lenguajes.c++
Subject: Re: Como pasar un puntero a función miembro como
 parametro de otra función
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAQMAAABtzGvEAAAABlBMVEUAAAD///+l2Z/dAAAA
      oElEQVR4nK3OsRHCMAwF0O8YQufUNIQRGIAja9CxSA55AxZgFO4coMgYrEDDQZWPIlNAjwq9
      033pbOBPtbXuB6PKNBn5gZkhGa86Z4x2wE67O+06WxGD/HCOGR0deY3f9Ijwwt7rNGNf6Oac
      l/GuZTF1wFGKiYYHKSFAkjIo1b6sCYS1sVmFhhhahKQssRjRT90ITWUk6vvK3RsPGs+M1RuR
      mV+hO/VvFAAAAABJRU5ErkJggg==
X-Accept-Language:         fr, es, en
X-Disabled: X-No-Archive: no
References: <4a22be7f-4b21-495b-91da-271ee842ded1@k7g2000hsd.googlegroups.com>
From: pjb@informatimago.com (Pascal J. Bourguignon)
Importance: high
Date: Tue, 07 Oct 2008 14:44:43 +0200
Message-ID: <7cmyhg4ls4.fsf@pbourguignon.anevia.com>
Organization: Anevia SAS
User-Agent: Gnus/5.1008 (Gnus v5.10.8) Emacs/22.2 (gnu/linux)
Cancel-Lock: sha1:ZDViZmUyY2EzMTc2Nzc2MTg1ZTNhNDUwMjI5ZTRhODYwODQ0ZDZiMw==
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Lines: 45
NNTP-Posting-Date: 07 Oct 2008 14:44:44 MEST
NNTP-Posting-Host: 88.170.236.224
X-Trace: 1223383484 news-2.free.fr 12999 88.170.236.224:44531
X-Complaints-To: abuse@proxad.net