¿Cómo convertir un puntero al objeto void al objeto de clase?C++ typecast: lanzar un puntero desde el puntero void al puntero de clase
Respuesta
Con un static_cast
. Tenga en cuenta que solo debe hacer esto si el puntero apunta realmente a un objeto del tipo especificado; es decir, el valor del puntero a void
se tomó de un puntero a dicho objeto.
thing * p = whatever(); // pointer to object
void * pv = p; // pointer to void
thing * p2 = static_cast<thing *>(pv); // pointer to the same object
Si necesita hacer esto, quizás desee replantear su diseño. Está renunciando a la seguridad del tipo, por lo que es fácil escribir código no válido:
something_else * q = static_cast<something_else *>(pv);
q->do_something(); // BOOM! undefined behaviour.
No, eso no es útil; Está incorrecto. Use 'reinterpret_cast'. –
@MarceloCantos: ¿Por qué utilizarías un reparto aún más peligroso que el que necesitas? –
+1 @MarceloCantos: No, de hecho es correcto. 'static_cast' se usa para invertir conversiones implícitas y el puntero de clase para void pointer es una conversión implícita. –
- 1. C Dereference void * puntero
- 2. Convertir del puntero C++/CLI al puntero nativo de C++
- 3. Lanzar un puntero struct a otro - C
- 4. C++ borrar un puntero a un puntero
- 5. ¿Está bien para static_cast un puntero void *
- 6. Puntero a un puntero en objetivo-c?
- 7. Al lanzar un puntero de función a otro tipo
- 8. puntero a un puntero
- 9. Puntero de clase base frente a puntero de clase heredado?
- 10. puntero constante asignar a un puntero
- 11. elenco de puntero indirecto a un puntero de Objective-C
- 12. pasando puntero de objeto como puntero protocolo
- 13. Puntero de conversión C++ al método estático
- 14. C: ¿cómo accedes al valor de un puntero a un puntero a ese valor?
- 15. C++. Error: void no es un tipo puntero a objeto
- 16. puntero a puntero aritmética
- 17. Puntero de fundición para objetar a void * en C++
- 18. C# - Crear matriz administrada desde el puntero
- 19. void * vs. char * aritmética del puntero
- 20. El puntero a puntero se bloquea en caso de que el puntero no
- 21. Obtener void * puntero al contenido de cualquier impulso ::
- 22. ¿Diferencia entre puntero a puntero y puntero a matriz?
- 23. C puntero de función de conversión para anular puntero
- 24. C/C++ Puntero Pregunta
- 25. Puntero al valor literal
- 26. Base puntero y pila puntero
- 27. C++ sobrecargado método puntero
- 28. En C, ¿es seguro lanzar un puntero de función variable a un puntero de función con argumentos finitos?
- 29. Copia de clase C++ (copia de puntero)
- 30. puntero a puntero con argv
¿Cómo se obtuvo el puntero en primer lugar? ¿Cómo sabes que realmente está apuntando a un objeto? ¿Cómo sabes a qué tipo de objeto apunta? –