Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





templates

Iniciado por ethernet, 01 de Enero de 1970, 01:00:00 AM

« anterior - próximo »

ethernet

                                hola, me ha surgido una duda de funciones con templates y no veo por donde encontrar la solucion:

tengo una funcion asi:


template <class T> func( T &obj){ ... }



y la puedo llamar asi:


int foo; func(foo);



en vez de llamarala asi:


int foo; <int>func(foo);


hasta aqui ninguna duda, pero no puedo hacer lo mismo con la funcion siguiente:


template <class T>

void func(T &obj,void ( T ::*pFunc)()) { ..}



a esta funcion la tengo q llamar con el tipo explicitamente, o sea asi:


clase foo; <clase>func(foo,foo.metodo);


y no asi, q es como quisiera:


clase foo; func(foo,foo.metodo);



sabeis alguna forma de solucionar el tema?. Espero haberme explicado bien :ojo:
saludos.

EDIT: para cuando un foro como flipcode?


[ Este Mensaje fue editado por: ethernet el 2002-08-09 05:26 ]                                

Grugnorr

                                El que es un caso especial es el primero, no el segundo.

En el primero el compilador deduce el tipo y no necesitas especificarlo como parámetro de plantilla, en el segundo no.

Cuando ande más despejado intentaré pensar en un explicación más currada, pero muchas veces no sé de antemano si el compilador deduce o no y es cuestión de probarlo :ojo:.

La duda que tengo yo es si todos los compiladores hacen las mismas deducciones(cosa que no creo), por lo que puede ser mejor especificarlo siempre(salvo en casos muy claros, tras hacer pruebas en distintos compiladores)




                               
hat the hells!






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.