¿Cuándo usar reinterpret_cast?
Estoy un poco confundido con la aplicabilidad dereinterpret_cast
vsstatic_cast
. Por lo que he leído, las reglas generales son usar reparto estático cuando los tipos se pueden interpretar en tiempo de compilación, de ahí la palabrastatic
. Este es el reparto que el compilador de C ++ usa internamente también para los lanzamientos implícitos.
reinterpret_cast
s son aplicables en dos escenarios, convertir tipos enteros a tipos de puntero y viceversa o convertir un tipo de puntero a otro. La idea general que tengo es que esto no es portátil y debe evitarse.
Donde estoy un poco confundido es un uso que necesito, estoy llamando a C ++ desde C y el código C debe retener el objeto C ++, así que básicamente contiene unvoid*
. Qué reparto se debe usar para convertir entrevoid *
y el tipo de clase?
He visto el uso de ambosstatic_cast
yreinterpret_cast
? Aunque por lo que he estado leyendo parecestatic
es mejor ya que el reparto puede suceder en tiempo de compilación? Aunque dice usarreinterpret_cast
para convertir de un tipo de puntero a otro?