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.