[C con Clase] Templates: No comprendo sintaxis

ALEJANDRO ALFARO aleannsam en hotmail.com
Jue Mar 12 16:34:23 CET 2009


Hola que tal soy nuevo en esto de c++ me gustaria aprender
soy de toluca no se si haya alguien por aca quien me pueda dar unas asesorias
Gracias 
y saludos cordiales.







> Date: Thu, 12 Mar 2009 11:00:26 -0400
> From: srd4121 en njit.edu
> To: cconclase en listas.conclase.net
> Subject: Re: [C con Clase] Templates: No comprendo sintaxis
> 
> Hola Vicente,
> 
> vicente lozano wrote:
> > Hola,
> > 
> > Leyendo un poco de codigo me he encontrado con un template que no 
> > consigo entender, a ver si podeis echarme una mano:
> 
> [CORTE]
> 
> > 
> > Entiendo que se define una clase MessageMappingOscPacketListener que
> > deriva de OscPacketListener y que usa una clase generica T.
> > 
> > Define como publico un tipo: function_type que es una operacion de la
> > clase T que devuelve void y acepta como parametros 2 referencias 
> > constantes, (osc::ReceivedMessage y IpEndpointName). (No se como
> > poner esto en UML)
> > 
> 
> Bueno, técnicamente, 'function_type' es un puntero a una función miembro 
> de la clase T. Esto actúa como un "tipo de función"; de ahí el nombre 
> 'function_type'.
> 
> > Define como protegido una funcion UML -> 
> > #RegisterMessageFunction(char*, function_type) : void
> > y otra: UML ->/ #//ProcessMessage( osc::ReceivedMessage& , 
> > IpEndpointName& ): void
> > 
> > Define como privado un struct cstr_compare cuyo unico miembro es una
> > funcion que sobrecarga el operador () para aceptar dos punteros a
> > char constantes y devolver un bool: (Porque hace esto? como se usaria
> > ese struct?)
> > 
> 
> Esto lo hace porque será usado en la clase-plantilla 'map' como la 
> función de comparación para poder ordenar elementos internamente. La 
> clase-plantilla espera obtener una estructura o clase que contenga el 
> operador (). Por ejemplo, hará algo así,
> 
> const char *psz1, *psz2;
> function_type func;
> cstr_compare comparar;
> 
> // ¿ psz1 > psz2 ?
> if( !comparar( psz1, psz2 ) )
> {
>    ...
> }
> 
> > Y luego define otro tipo que ya no tengo ni idea de que hace.
> > 
> 
> Supongo que te refieres al mapa. La clase-plantilla 'map' pertenece a 
> las bibliotecas de ANSI C++. Esta plantilla sirve para crear una lista 
> de parejas. Cada pareja asocia un valor único con otro. Automáticamente, 
> las parejas son ordenadas según el criterio dado, que en este caso es 
> 'cstr_compare'.
> 
> Luego, se declara el objeto 'functions_' de la clase generada a partir 
> de 'map'. Básicamente, hemos creado una lista de punteros a funciones 
> miembros de la clase T, en la que cada puntero a función es asociado a 
> un nombre - como una cadena de caracteres. Por ejemplo, podemos tener lo 
> siguiente:
> 
> "hola" <=> clase::mostrar_hola()
> "abrir" <=> clase::conectar()
> "cerrar" <=> clase::salir()
> "nuevo" <=> clase::crearNuevo()
> 
> Usamos esta clase-plantilla 'MessageMappingOscPacketListener' para 
> registrar y asociar una cadena con una función miembro y luego 
> invocarla. Según la representación del mensaje recibido como una cadena 
> de caracteres, buscaremos la función miembro asociada a ella y la 
> invocaremos.
> 
> 
> Espero haber aclarado las dudas.
> 
> Steven
> 
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

_________________________________________________________________
¿Quieres transformarte en un emoticón de Messenger? Descubre cómo
www.messengernews.com.mx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090312/16053429/attachment.html>


Más información sobre la lista de distribución Cconclase