Russian Qt Forum
Ноября 21, 2025, 19:55
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Вопросы новичков
>
QScopedPointer и QList
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QScopedPointer и QList (Прочитано 7106 раз)
KSergeyP
Новичок
Offline
Сообщений: 27
QScopedPointer и QList
«
:
Апреля 03, 2023, 08:40 »
Добрый день!
Возможно ли создать QList<QScopedPointer>? Точнее создать то его можно, а вот элементы добавить не получается.
Проблема в том что при вызове append указатель копируется в лист, а копирование запрещено.
Собственно вопрос можно ли создавать указатель непосредственно сразу в листе, чтобы не было необходимости ничего никуда копировать?
P.S: с SharedPointer таких проблем нет, но хотелось бы разобраться именно с unique/QScopedPointer
И второй вопрос, как у умных указателей (shared) с поток безопасностью? Что будет если один поток пытается сделать копию, а в другом в этот момент уничтожается последний указатель?
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4752
Re: QScopedPointer и QList
«
Ответ #1 :
Апреля 03, 2023, 09:03 »
std::unique_ptr можно перемещать (std::move), а QScopedPointer видимо нельзя (не вижу соответствующего конструктора)
std::shared_ptr потокобезопасен, Qt'шный вариант тоже
https://doc.qt.io/qt-6/qsharedpointer.html#thread-safety
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
KSergeyP
Новичок
Offline
Сообщений: 27
Re: QScopedPointer и QList
«
Ответ #2 :
Апреля 03, 2023, 11:30 »
Цитата: kambala от Апреля 03, 2023, 09:03
std::unique_ptr можно перемещать (std::move), а QScopedPointer видимо нельзя (не вижу соответствующего конструктора)
std::shared_ptr потокобезопасен, Qt'шный вариант тоже
https://doc.qt.io/qt-6/qsharedpointer.html#thread-safety
В QList не перемещается. Qt 5.12
QList<unique_ptr<int>> IntList;
unique_ptr<int> p = make_unique<int>(1);
IntList.append(std::move(p));
Не собирается:
error: use of deleted function 'std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; _Dp = std::default_delete<int>]'
«
Последнее редактирование: Апреля 03, 2023, 11:44 от KSergeyP
»
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4752
Re: QScopedPointer и QList
«
Ответ #3 :
Апреля 03, 2023, 15:06 »
QList не умеет добавлять && элементы, может только другой объект QList таким образом добавить (т.е. можно создать QList in-place и добавить). а вот например std::vector может.
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...