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