Si he definido una clase:¿Cómo obtener el nombre de clase?
class Blah {};
¿Cómo puede I:.
std::string const className = /* What do I need to do here? */;
assert(className == "Blah");
no creo typeid() nombre() es una buena idea ya que es compiler implementation específica. ¿Hay algo provisto por el estándar C++ o Boost?
Nota: Si la clase se heredara del QObject de Qt, podría usar fácilmente QMetaObject::className()
para obtener el nombre de clase.
Otra solución sería TypeId() + demangle. De lo contrario, ¿cómo podría manejar los espacios de nombres, etc.? –
typeid no garantiza que no se pueda registrar. – quetzalcoatl
El primer caso es el único serio. Es legible, fácil de mantener y usar. El segundo explica un problema simple. ¿Quizás prefiera utilizar una API REST para llamar a un servicio web? El tercero es considerado como un mal hábito. Cuando se trata de un buen diseño, el preprocesador es el peor y lo último que debe utilizar. Los únicos pocos casos de uso razonables para preprocesadores que puedo pensar es pragma una vez. – nali