[C con Clase] String - Funcion

Steven Davidson srd4121 en njit.edu
Lun Jul 9 16:02:47 CEST 2012


Hola Álvaro,

On 7/9/2012 8:58 AM, Álvaro Gómez Uría wrote:
> Hola,
> Me gustaria saber si existe la posibilidad de usar un String como
> nombre de una funcion?. Para que se entienda mejor pongo un ejemplo:
>
> String name = iter->movable->getName();
> // Ahora quisiera usar name como nombre de otra funcion.
> if(!name.isPlaying())
> {
> name.trigger();
> }
>

Según este ejemplo, el objeto 'String' realmente actúa como el objeto, 
del cual se invoca sus funciones miembro.

La respuesta breve es: "no". La explicación es que ese nombre es un 
conjunto de valores. Como C++ es compilado, el compilador no tiene la 
más mínima idea de los valores y de hecho los valores no forman parte 
del código fuente. Habría sido interesante que C++ aceptara cadenas 
constantes como identificadores de entidades en el código fuente, pero 
me temo que no es el caso.

La solución es crear un array asociativo que a veces se llama "mapa". 
Puedes usar la clase-plantilla 'map', definida en <map>, para asociar un 
objeto como clave con otro objeto como el valor. Esta solución es muy 
parecida a la que se usa en las bases de datos basadas en las relaciones 
entre entidades.

La lógica sería la siguiente,

     <clave,valor>
----------------------
<"NPC_001",oNPC_001 &>
<"NPC_002",oNPC_002 &>
<"NPC_003",oNPC_003 &>
<"NPC_004",oNPC_004 &>
...

Aquí los valores siguen la nomenclatura de 'objeto &' que se refiere a 
una referencia de un objeto. Esto es porque mantendremos los objetos 
instanciados en otra tabla o lista. Por ejemplo,

  lista
--------
oNPC_001
oNPC_002
oNPC_003
oNPC_004
...

También podríamos guardar punteros a los objetos en el mapa en lugar de 
referencias.


Espero que esto te oriente.

Steven





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