El operador typeid
en C++ devuelve un objeto de la clase std::type_info
que puede dar su nombre textual. Sin embargo, solo estoy interesado en obtener un identificador numérico único para cualquier clase polimórfica. (único en el ámbito de una sola ejecución del programa - no necesariamente entre las corridas)Identificador único numérico de una clase a través de typeid
En la práctica, tan sólo pudiera eliminar la referencia al puntero y leer el contenido del vptr
's - pero esto no sería ni elegante ni portátil. Prefiero una forma portátil.
¿Puedo usar el operador typeid
de alguna manera para tener un identificador numérico "seguro" para una clase? Por ejemplo, ¿puedo contar con que la dirección resultante de la estructura std::type_info
sea la misma para cada llamada a typeid
en una clase determinada? O tal vez el puntero name()
sí mismo?
Se podría calcular un hash en el nombre del typeid. Como este es un literal de cadena, debería resolverse en tiempo de compilación también. Al menos eso es de lo que dice la "Gema" de donde obtuve esa idea ... mi experiencia es diferente. Para mí, la sobrecarga de esa solución es inaceptablemente alta. Pero bueno, ciertamente es portátil, así que ... sí. – Damon
¿Qué problema estás tratando de resolver aquí? –
El problema de mí es intentar resistir el lanzamiento de la dirección del objeto a 'void **' y quitarle la referencia para el vptr. : D Y más en serio, algo parecido a un vtable bidimensional. – Kos