Article View: es.comp.lenguajes.c++
Article #125Re: Como pasar un puntero a función miembro como parametro de otra función
From: jrbcast
Date: Tue, 07 Oct 2008 14:47
Date: Tue, 07 Oct 2008 14:47
50 lines
2565 bytes
2565 bytes
Gracias, pero me temo que no puedo usar boost :-(, mo me dejan añadir
librerías
a la que ya tenemos. ¿Sabes si esto se puede hacer de otra forma,
digamos std:: o algo?.
Gracias
On 7 oct, 14:44, p...@informatimago.com (Pascal J. Bourguignon) wrote:
> jrbc...@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:
<714716d7-0930-4d7e-b96c-c467d88f7d55@v30g2000hsa.googlegroups.com>Path:
arc1-ca.pugleaf.net!g2news1.google.com!postnews.google.com!v30g2000hsa.googlegroups.com!not-for-mailReferences:
<4a22be7f-4b21-495b-91da-271ee842ded1@k7g2000hsd.googlegroups.com> <7cmyhg4ls4.fsf@pbourguignon.anevia.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!postnews.google.com!v30g2000hsa.googlegroups.com!not-for-mail From: jrbcast@gmail.com Newsgroups: es.comp.lenguajes.c++ Subject: Re: Como pasar un puntero a función miembro como parametro de otra función Date: Tue, 7 Oct 2008 07:47:10 -0700 (PDT) Organization: http://groups.google.com Lines: 51 Message-ID: <714716d7-0930-4d7e-b96c-c467d88f7d55@v30g2000hsa.googlegroups.com> References: <4a22be7f-4b21-495b-91da-271ee842ded1@k7g2000hsd.googlegroups.com> <7cmyhg4ls4.fsf@pbourguignon.anevia.com> NNTP-Posting-Host: 150.244.87.118 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1223390831 26617 127.0.0.1 (7 Oct 2008 14:47:11 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Tue, 7 Oct 2008 14:47:11 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: v30g2000hsa.googlegroups.com; posting-host=150.244.87.118; posting-account=h2lfHQoAAACqfsN9yL0nKhXPX_fnJMkm User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; es-ES; rv:1.9.0.3) Gecko/2008092414 Firefox/3.0.3,gzip(gfe),gzip(gfe)