He encontrado una solución simple en algún lugar de Internet para una clase de identidad sin C++ RTTI incorporado.Identidad de clase sin RTTI
template <typename T>
class Identity {
public:
static int64_t id()
{
static int64_t dummy;
return reinterpret_cast<int64_t>(&dummy);
}
};
Cuando necesitamos algo de ID de clase, sólo tiene que utilizar:
Identity<OurClass>::id();
Me pregunto, ¿hay colisiones? ¿Puede devolver el mismo ID para las diferentes clases, o la identificación diferente para las mismas clases? He intentado este código con g ++ con diferentes valores de optimización, todo parece estar bien.
En principio, sí. No hay garantía de que un puntero de función tenga el mismo tamaño que un 'int'. –
Esto es relevante para mis intereses ... –
Para evitar el problema anterior, sería mejor poner una variable estática 'int' en esa plantilla de función miembro estática y devolver un puntero a * que *. El compilador optimizará la función de todos modos. – Electro