static_cast - reinterpret_cast c++
reinterpret_cast desecha calificadores (2)
Como Nick Strupat declaró en el comentario,
reinterpret_cast no puede deshacerse de los calificadores cv
Así que puedes usar reinterpret_cast
y const_cast
juntos.
Dialog *dialog = const_cast<Dialog*>(reinterpret_cast<const Dialog *>(data));
Agrego un problema al reinterpretar una variable y no sé por qué ...
int ProgressBar(const uint64_t data_sent, const uint64_t data_total, void const * const data) {
Dialog *dialog = reinterpret_cast<Dialog *>(data);
dialog->setValue((data_sent * 100) / data_total);
}
El reinterpret_cast
parece no permitido y dice
reinterpret_cast desde ''const void *) a Dialog * elimina los calificadores
Alguna idea
También debe usar un const_cast
para eliminar los calificadores const
. Además, la conversión desde void *
puede usar static_cast
, no es necesario volver a interpretar. Por ejemplo:
Dialog const *dialog = static_cast<Dialog const *>(data);
Dialog *d2 = const_cast<Dialog *>(dialog);
Sin embargo, asegúrese de que el Diálogo no sea un objeto const
; el intento de modificar un objeto const (presumiblemente, setValue
hace esto) causa un comportamiento indefinido.
Yo sugeriría repensar la interfaz de ProgressBar
para evitar necesitar este lanzamiento.