Quando usar reinterpret_cast?
Estou um pouco confuso com a aplicabilidade dereinterpret_cast
vsstatic_cast
. Pelo que li, as regras gerais são usar conversão estática quando os tipos podem ser interpretados em tempo de compilação, daí a palavrastatic
. Esse é o elenco que o compilador C ++ usa internamente também para lançamentos implícito
reinterpret_cast
s são aplicáveis em dois cenários, converter tipos inteiros em tipos de ponteiros e vice-versa ou converter um tipo de ponteiro em outro. A ideia geral que recebo é que isso não é portável e deve ser evitado.
Onde estou um pouco confuso é um uso que eu preciso, estou chamando C ++ de C e o código C precisa se apegar ao objeto C ++, então basicamente ele contém umvoid*
. Que elenco deve ser usado para converter entrevoid *
e o tipo de classe?
Vi uso de ambosstatic_cast
ereinterpret_cast
? Embora, pelo que tenho lido, pareçastatic
é melhor, pois o elenco pode acontecer em tempo de compilação? Embora diga para usarreinterpret_cast
para converter de um tipo de ponteiro para outro?