![]() |
|
|
![]()
|
|
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Можно. Но это не решит проблемы удаления.
Выдал кому-то указатель на интерфейс - а затем удалил сам объект. Или наоборот, забыл удалить. А предлагаемый механизм автоматически удаляет объект, когда все обертки удалились. В Qt такая схема используется для QList, в QSqlTableModel и многих других классах. Достаточно просто реализуется с помощью QAtomicInt. qAtomicAssign(), qAtomicDetach(). Но нужно не забывать реализовывать копю коструктор, operator=, иногда operator==, нельзя использовать генерируемые компилятором по умолчанию. Что лучше решать тебе самому, зависит от конкретной задачи. |
|||
|
||||
| xbarmaglot |
|
||||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
логично да закрыть их вообще.
а может вообще всем по рукам надавать
Создать Wrapper нельзя - закрыт конструктор. Копировать нельзя - тоже закрыто. Можно лишь получить ссылку и ее использовать. P.S. Или не городить огород и передать shared_ptr в конструктор Wrapper - тогда там и подсчет ссылок и все остальное |
||||||
|
|||||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
можно, но можно пытаться использовать её и после удаления Parent'а. В общем, ничем не отличается от варианта с указателем. Вообще ничем. -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| xbarmaglot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
||||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
xbarmaglot, как любит говорить один из участников этого форума "Вы лечите последствия, а не причину"
В смысле, думаю, стОит пересмотреть сам подход, а не пытаться найти лазейку в Си++, Qt, etc. Андрей, я прав ? Это сообщение отредактировал(а) borisbn - 13.9.2012, 23:27 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| xbarmaglot |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 149 Регистрация: 28.8.2012 Репутация: нет Всего: нет |
а что можно предложить взамен ? Мне кажется идея с подсчетом ссылок тоже излишняя. Должно быть решение проще ... |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 23 Всего: 72 |
Ну можешь использовать "умные указатели" - но это значит только то, что использование счётчиков (или списков ссылок) будет скрыто от тебя и для счётчиков будет выделяться память отдельно.
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |