Page 1 of 1

Pregunta de C++ sobre typeid(this).name()

PostPosted: Thu Dec 13, 2018 7:30 am
by erkosone
Hola gente, como algunos saben ando con un proyecto en C++ y me gustaría que si alguien con buenos conocimientos en C++ lee este mensaje me comentara que le parece esto que voy a hacer.. para saber si es fiable o no..

Dentro de un juego existen muchas clases de objetos, puede haber un personaje, o varios.. pero todos de una misma clase, o no.. pueden haber enemigos.. objetos para recojer.. arboles etc etc..
El dilema que tengo es simple, como obtener un identificador de tipo?

Vale, primero el "para que"?
- en gemix existe algo como esto: collision( type enemigo );
Esto es muy útil ya que permite comprobar la colisión entre el objeto que realiza la llamada y una serie de objetos que pertenecen a un tipo de procesos determinado, y lo mejor de todo, ya hablando a bajo nivel "lo que el programador no ve", es que es completamente desasistido, osea, el 'type' de un proceso, en gemix por ejemplo se crea automaticamente al crearse el proceso.

Bien, yo me pregunto si en C++ hay algo similar a esto, osea, algun mecanismo que me permita averiguar el tipo de clase de objeto que es en concreto un objeto, he encontrado esta información:
typeid(this).name()

Tiene buena pinta y parece funcionar bien, pero en algunas web indican que no se asegura que el 100% de los casos el programa obtenga el mismo nombre exacto..
Alguien tiene información sobre esto? o alguien conoce un método alternativo para hacer esto?

Realmente me da igual si lo que obtengo es un string, un char[] o un int.. simplemente quiero obtener un identificador del tipo que sea que sea siempre el mismo para todos los objetos de un tipo de clase.

Alguna info al respecto?

- Yo estoy haciendo pruebas y parece funcionar bien en todos los casos.. alguien ha usado esta feature alguna vez y le ha dado problemas?

Re: Pregunta de C++ sobre typeid(this).name()

PostPosted: Thu Dec 13, 2018 10:05 am
by CicTec
Hola erkosone,

Yo no llegue a usarlo, pero lo que estas utilizando se llama RTTI en C++, aqui varios articulos que indican que es, como se usa y sus limitaciones:
https://en.wikipedia.org/wiki/Run-time_type_information
https://en.wikibooks.org/wiki/C%2B%2B_Programming/RTTI

https://www.youtube.com/watch?v=Z_Fe40ntu9M
https://www.youtube.com/watch?v=DLJYbUXFcHk

https://stackoverflow.com/questions/579 ... ve-is-rtti

https://www.codingunit.com/c-tutorial-t ... ing-part-1
https://www.codingunit.com/cplusplus-tu ... -type_info

https://www.jarchitect.com/QACenter/ind ... ation-rtti

De todas formas, como es bastante compleja de usar, yo en ti haria una implementacion simple propria, de hecho los DIV engines la hacen en C y no es que requiera mucho hacerla.

Re: Pregunta de C++ sobre typeid(this).name()

PostPosted: Thu Dec 13, 2018 10:15 am
by erkosone
Gracias por la información cictec, yo también he hecho una implementación propia por que es lo mas sencillo que voy a poder usar.
De todos modos gracias por la información ;)