Quindi, se la vostra conversione da Void * a digitare * o dal tipo * a void * si dovrebbe utilizzare:Fusioni da Void * al tipo * utilizzando C++ getto stile: static_cast o reinterpret_cast
void func(void *p)
{
Params *params = static_cast<Params*>(p);
}
o
void func(void *p)
{
Params *params = reinterpret_cast<Params*>(p);
}
Per me static_cast sembra il più corretto ma ho visto entrambi utilizzati per lo stesso scopo. Inoltre, la direzione della conversione è importante. cioè deve ancora possibile utilizzare static_cast per:
_beginthread(func,0,static_cast<void*>(params)
Ho letto le altre domande sul C++ stile di fusione ma non sono ancora sicuro di quello che il modo corretto è per questo scenario (credo che sia static_cast)
Allora perché hanno reinterpret_cast <>? Ci sono situazioni in cui reinterpre_cast <> dovrebbe essere usato. Le operazioni di casting possono tutte essere coperte dagli altri 3 operatori cast? –
Se l'altro lato del vuoto * verrà lanciato su una classe base, sarà necessario eseguire il cast anche su quella classe base prima di assegnarla a void. –
@Noah Qualche riferimento per questo? –