Como se ha escrito here Qt hasta ahora tiene 8 clases de puntero inteligente specilized. Parece que es todo lo que necesitará. Sin embargo, para usar cualquiera de estos punteros inteligentes, su clase debe derivarse de QObject, que no siempre es conveniente. ¿Hay otras implementaciones de punteros inteligentes en Qt que funcionan con clases arbitrarias?Punteros inteligentes en Qt
Respuesta
Muchas clases de Qt se derivan de QObject, y mientras algunos de los incorporados en las clases de puntero inteligente se relacionan con QObject (o QSharedData), los QSharedPointer y QScopedPointer plantillas aparecen para permitir que los punteros a nada.
Más allá de eso, usted encontrará algunos smart pointer templates en Boost:
- scoped_ptr - propiedad exclusiva simple de objetos individuales. No copiable
- scoped_array - Propiedad exclusiva de matrices. No copiable
- shared_ptr - Propiedad del objeto compartida entre múltiples punteros.
- shared_array - Propiedad de la matriz compartida entre múltiples punteros.
- weak_ptr - Observadores no propietarios de un objeto propiedad de shared_ptr.
- intrusive_ptr - Propiedad compartida de objetos con un recuento de referencias incrustado.
Esto es correcto. STL también tiene auto_ptr. La pregunta es sobre QT. – alexkr
Prácticamente todo en Qt usando QObject como base, así que si quieres algo que funcione fuera de eso, aumenta un lugar para ir buscando :) –
Guau, todavía uso C++ como "C con clases" (eso es C++ alrededor de 1990). Eso funciona, toda esta locura de punteros inteligentes, ilegible y fea me enferma. – Lothar
- 1. punteros inteligentes en C++: compartir punteros vs. compartir datos
- 2. Boost punteros inteligentes
- 3. punteros y matrices inteligentes
- 4. Punteros inteligentes vs Referencia
- 5. ¿Hay "punteros inteligentes" en Java?
- 6. impulsar punteros inteligentes y BOOST_NO_MEMBER_TEMPLATES
- 7. Introducción a los punteros inteligentes en C++
- 8. usando mem_fun() para contenedor de punteros inteligentes
- 9. pros y contras de punteros inteligentes
- 10. ¿Cómo usar los punteros inteligentes de C++?
- 11. Punteros inteligentes y manejo de excepciones
- 12. punteros inteligentes, typedefs y declaraciones directas
- 13. Punteros inteligentes y recuento de referencias en Java
- 14. Buscar fugas de memoria causadas por punteros inteligentes
- 15. ¿Cómo puedo usar tipos de retorno covariantes con punteros inteligentes?
- 16. ¿Por qué no debería usar referencias a punteros inteligentes?
- 17. Punteros inteligentes/gestión de memoria segura para C?
- 18. Cómo devolver punteros inteligentes (shared_ptr), por referencia o por valor?
- 19. ¿Debería una biblioteca usar una interfaz que utiliza punteros inteligentes?
- 20. Supresión del puntero al tipo incompleto y punteros inteligentes
- 21. Fugas de C++ en caso de excepción incluso mediante el uso de punteros inteligentes
- 22. ¿Los punteros inteligentes excluyen la necesidad de una construcción en dos fases?
- 23. Pimpl con punteros inteligentes en una clase con un constructor plantilla: tema incompleta tipo raro
- 24. ¿Cuál es la mejor manera de implementar punteros inteligentes en C++?
- 25. Pestañas inteligentes en vim
- 26. ¿Alguien puede explicar los indicadores inteligentes en inglés sencillo?
- 27. ¿Está bien heredar de los punteros inteligentes C++ 11 y anular los operadores relativos?
- 28. ¿Cómo eliminar punteros inteligentes de un caché cuando ya no hay más referencias?
- 29. C++ 0x Comparaciones inteligentes de punteros: Inconsistente, ¿cuál es el fundamento?
- 30. ¿Cómo utilizar los punteros inteligentes estándar de C++ con Windows HANDLEs?
En realidad, para la mayoría de esos indicadores no es necesario que derive de QObject, no creo. Hay algunas otras cosas que las clases necesitarían manejar o derivar de algunas otras Q-classes para algunos de ellos. AFAIK, solo QPointer necesita que su clase se derive de QObject. Habiendo dicho eso, requieren la habilidad de usar Qt en su proyecto. –