typeid del método estático

Aquí tengo el siguiente problema: escribo (refactorizo) un registrador y estoy tratando de usar el mecanismo de identificación de tipo de tiempo de ejecución de C++, específicamente typeid para obtener la información de tipo de tiempo de ejecución de la clase que acaba de llamar al registrador. Esto entra en una macro como:

#define debug() Streamer(__FILE__, __FUNCTION__, typeid(this).name(), LOG_DEBUG)

donde Streamer es una clase que sobrecarga el operator << para obtener las funciones de transmisión requeridas, como debug() << "message " << 16; etc ...

El único problema es cuando llamo al debug() macro de una función estática. porque entonces el typeid(this) se vuelve loco y se queja muy correctamente de que un método estático no tiene this.

Me gustaría escuchar su opinión y tal vez algunos fragmentos de código sobre cómo obtener la clase como una cadena que contiene el método estático que intenta iniciar sesión.

Saludos, F.

preguntado el 21 de mayo de 12 a las 12:05

Tampoco puede usar esa macro en funciones fuera de las clases, por ejemplo main. -

esta también es una observación correcta :( Merece +1 -

Si usa gcc, puede extraer el tipo de __PRETTY_FUNCTION__. Es posible que no pueda crear macros genéricas que funcionen en ambos tipos de métodos. -

FWIW: la salida de typeid(x).name() no siempre es muy legible de todos modos. -

Sip, gcc.gnu.org/onlinedocs/libstdc++/manual/ext_demangling.html ayuda un poco para gcc, en windows es una historia diferente -

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.