reinterpret_cast, jette qualificatifs
- Je ajouter une question sur la réinterprétation d'une variable et je ne sais pas pourquoi..
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);
}
la reinterpret_cast
semble pas les permis et dire
reinterpret_cast de 'const void *) dans la boîte de Dialogue * jette qualificatifs
Toute idée
reinterpret_cast
ne pouvez pas jeter loin cv-qualificatifs- Essayez
Dialog const * const dialog = reinterpret_cast<Dialog const * const>(data);
- La dernière
const
vous mettre en il n'y a pas d'effet. - Euh, pourquoi êtes-vous essayer de se débarrasser de la
const
ici? Que les sons dangereux.
Vous devez vous connecter pour publier un commentaire.
Comme Nick Strupat a déclaré dans un commentaire,
De sorte que vous pouvez utiliser
reinterpret_cast
etconst_cast
ensemble.Vous devez également utiliser un
const_cast
pour supprimerconst
qualificatifs. Aussi, la conversion devoid *
pouvez utiliserstatic_cast
, il n'a pas besoin de le réinterpréter. Par exemple:Cependant , assurez-vous que la boîte de Dialogue est en fait pas un
const
objet; en essayant de modifier un const objet (sans doutesetValue
ne ce) provoque un comportement indéfini.Je vous suggère de repenser l'interface de
ProgressBar
pour éviter d'avoir besoin de cette fonte.