Come lanciare un puntatore a oggetto void su oggetto classe?C++ typecast: cast un puntatore dal puntatore void al puntatore della classe
risposta
Con un static_cast
. Nota che devi farlo solo se il puntatore punta davvero su un oggetto del tipo specificato; ovvero, il valore del puntatore a void
è stato preso da un puntatore a tale oggetto.
thing * p = whatever(); // pointer to object
void * pv = p; // pointer to void
thing * p2 = static_cast<thing *>(pv); // pointer to the same object
Se vi trovate a doverlo fare, potreste voler ripensare il vostro progetto. Stai rinunciando al tipo di sicurezza, rendendo facile scrivere codice non valido:
something_else * q = static_cast<something_else *>(pv);
q->do_something(); // BOOM! undefined behaviour.
No, non è utile; è sbagliato. Usa 'reinterpret_cast'. –
@MarceloCantos: Perché dovresti usare un cast ancora più pericoloso di quello che ti serve? –
+1 @MarceloCantos: No, è corretto in effetti. 'static_cast' è usato per invertire le conversioni implicite e il puntatore di classe nel puntatore void è una conversione implicita. –
- 1. Perché digitare cast un puntatore void?
- 2. Puntatore cast di C++ al metodo statico
- 3. puntatore al puntatore rispetto a un puntatore
- 4. GCC segnala puntatore funzione puntatore oggetto Cast
- 5. x86/C++ - Puntatore al puntatore: Const viene violato dal compilatore?
- 6. Puntatore della classe base contro il puntatore della classe ereditata?
- 7. Che cos'è un puntatore void in C++?
- 8. Quando utilizzare un puntatore void?
- 9. Common Lisp CFFI: puntatore al puntatore
- 10. Puntatore a un puntatore nell'obiettivo-c?
- 11. C++ puntatore alla classe
- 12. const void * puntatore nei tipi
- 13. Puntatore funzione al membro della classe statico?
- 14. lancia il puntatore al puntatore a un array
- 15. Può esserci un puntatore a un puntatore a un puntatore?
- 16. Puntatore Puntatore con argv
- 17. Il puntatore "questo" può essere diverso dal puntatore dell'oggetto?
- 18. Cast a puntatore struct per interfacciarsi puntatore nella Golang
- 19. C++: Capire "questo" puntatore
- 20. C puntatore nullo aritmetica
- 21. puntatore const assegnare a un puntatore
- 22. Classe puntatore a funzione membro
- 23. Un cast da (puntatore a const) a (puntatore a non-const) C++ non valido?
- 24. Assegnazione dell'oggetto Objective-C in un puntatore void * con ARC
- 25. Conversione di un puntatore non `void` a `uintptr_t` e viceversa
- 26. C: estrapola il tipo dal puntatore vuoto
- 27. passando puntatore dell'oggetto come puntatore protocollo
- 28. Il puntatore statico è un puntatore forte?
- 29. C++: passando il puntatore a un'altra classe
- 30. come utilizzare correttamente il puntatore void **?
Come hai ottenuto il puntatore in primo luogo? Come sai che sta davvero puntando a un oggetto? Come fai a sapere a quale tipo di oggetto punta? –