Как было написано here Qt до сих пор имеет 8 специализированных классов умных указателей. Похоже, это все, что вам когда-либо понадобится. Однако, чтобы использовать любой из этих умных указателей, ваш класс должен быть получен из QObject, что не всегда удобно. Существуют ли другие реализации интеллектуальных указателей в Qt, которые работают с произвольными классами?Умные указатели в Qt
ответ
Многие классы Qt являются производными от QObject, и в то время как некоторые из встроенных в смарт-классов указателей связаны с QObject (или QSharedData), то QSharedPointer и QScopedPointer шаблоны появляются, чтобы указатели на что-нибудь.
Кроме того, вы найдете некоторые smart pointer templates в Boost:
- scoped_ptr - Простое единоличное владение отдельных объектов. Noncopyable.
- scoped_array - Простое владение массивами. Noncopyable.
- shared_ptr - Владение объектом совместно используется несколькими указателями.
- shared_array - Владелец массива делится между несколькими указателями.
- weak_ptr - Непознающие наблюдатели объекта, принадлежащего shared_ptr.
- intrusive_ptr - Совместное владение объектами со встроенным подсчетом ссылок.
Это правильно. STL также имеет auto_ptr. Вопрос в QT. – alexkr
Практически все в Qt с использованием QObject в качестве базы, поэтому, если вы хотите что-то, что работает за пределами этого, Boost одно место для поиска :) –
Вау, я все еще использую C++, как «C с классами» (это C++ около 1990 года). Это работает, все эти уродливые нечитаемые умные указатели не понимают меня. – Lothar
- 1. Умные умные указатели
- 2. Qt умные указатели в функциональных параметрах
- 3. Умные указатели в функциях
- 4. C++ - указатели и «умные указатели»
- 5. Умные указатели с PythonQt
- 6. Умные указатели и деструктор
- 7. Косвенные умные указатели многоуровневые
- 8. умные указатели вместо указателей
- 9. Умные указатели и dynamic_cast
- 10. умные указатели в многопоточном envrionment
- 11. Умные указатели и объекты стека
- 12. умные указатели и исключения конструктора
- 13. Как следует использовать умные указатели?
- 14. Умные указатели и производные классы
- 15. Умные указатели с addrinfo struct
- 16. Умные указатели как ключ карты
- 17. Есть ли общие умные указатели?
- 18. Есть ли в Java «умные указатели»?
- 19. Умные указатели с «этим» в C++
- 20. грубые и умные указатели смешанные функции перегрузки
- 21. Умные указатели, форвардная декларация и C4150
- 22. Умные указатели - случаи, когда они не могут заменить необработанные указатели
- 23. Умные указатели при работе с конструкторами
- 24. C++ 11 умные указатели и полиморфизм
- 25. Умные указатели/безопасное управление памятью для C?
- 26. Умные указатели на C++ - интерфейс C#
- 27. умные указатели и итерация с авто
- 28. Неинициализированные указатели в QT
- 29. Умные указатели нарушают принцип минимизации # включает в заголовочные файлы?
- 30. Умные указатели в пределах управляемого массива умных указателей
На самом деле, для большинства этих указателей вам не нужно выводить из QObject, я не думаю. Есть некоторые другие вещи, которые ваши классы должны будут обрабатывать или извлекать из некоторых других Q-классов для некоторых из них. AFAIK, только QPointer требует, чтобы ваш класс был получен из QObject. Это, как было сказано, они требуют возможности использовать Qt в вашем проекте. –