¿Cuándo usar reinterpret cast?


Estoy poco confundido con la aplicabilidad de reinterpret_cast vs static_cast. Por lo que he leído, las reglas generales son usar cast estático cuando los tipos se pueden interpretar en tiempo de compilación, de ahí la palabra static. Este es el cast que el compilador de C++ utiliza internamente para los casts implícitos también.

reinterpret_casts 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 es transportables y debe ser evitar.

Donde estoy un poco confundido es un uso que necesito, estoy llamando a C++ desde C y el código de C necesita aferrarse al objeto C++, por lo que básicamente contiene un void*. ¿Qué cast se debe usar para convertir entre el void * y el tipo de clase?

He visto el uso de ambos static_cast y reinterpret_cast? Aunque por lo que he estado leyendo parece static es mejor ya que el cast puede ocurrir en tiempo de compilación? ¿Aunque dice usar reinterpret_cast para convertir de un tipo de puntero a otro?


Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52