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

Todo aquello que no está relacionado con Gemix Studio ni con la programación DIV en general.

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

Postby erkosone » Thu Dec 13, 2018 7:30 am

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?
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

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

Postby CicTec » Thu Dec 13, 2018 10:05 am

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.
User avatar
CicTec
 
Posts: 16553
Joined: Thu Jul 31, 2008 10:18 pm

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

Postby erkosone » Thu Dec 13, 2018 10:15 am

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 ;)
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.


Return to Offtopic

Who is online

Users browsing this forum: No registered users and 3 guests