|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|||||||||||
Как удалить объект, который это попросил?13.06.2014, 14:43. Показов 1929. Ответов 24
Метки нет (Все метки)
Сам вопрос возник, когда работал с Qt и их системой signal/slot. Проблема на С++ выглядела бы так:
Есть два объекта: А(асинхронный) и О(ожидающий).
1
|
|||||||||||
| 13.06.2014, 14:43 | |
|
Ответы с готовыми решениями:
24
Есть ссылка на объект. Можно ли изменить объект, который хранится по этому адресу? Что значит константный указатель на объект, указатель на константный объект, и как это можно использовать? this это адресс объекта, а *this это сам объект. я всё правельно понял? |
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
||||||
| 13.06.2014, 20:34 [ТС] | ||||||
|
Tulosba,
Не по теме: почему так лучше не делать? Закинул другому классу указатель на "родителя" Как уже писал выше, умный указатель не поможет. Renji, как вариант, но статический класс ради такого.. Сработает, но выглядит страшно (: Tulosba, опять-таки, разве delete this не UB? Renji, давайте я немного изменю условие. Есть объекты классов А и В, как в примере. ВНЕЗАПНО, появился поток, исполняющий download() класса В, который в конце этого метода перестанет существовать. Как этому потоку, исполняющему метод класса В удалить объект класса В? Как уже писал выше, способ
0
|
||||||
|
|
|
| 13.06.2014, 20:49 | |
|
Да ладно? Где это сказано, что delete this нельзя делать? Если после dеlеtе гарантированно не происходит обращений к полям данного объекта, то вполне можно!
1
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
||
| 13.06.2014, 20:50 | ||
1) Убедиться что на него больше никто не ссылается/не ссылался изначально/обнулить все ссылки на объект. 2) Выполнить delete. Один у вас поток или несколько, ничего принципиально не меняется.
0
|
||
|
187 / 180 / 25
Регистрация: 27.01.2012
Сообщений: 1,335
|
|
| 13.06.2014, 21:17 [ТС] | |
|
Kuzia domovenok, примерно с год-два назад здесь и научили меня сторожилы, что нельзя delete this, даже если не происходит ничего после.
0
|
|
|
Ушел с форума
|
|
| 13.06.2014, 21:35 | |
Сообщение было отмечено nexen как решение
Решение
this - это просто указатель на объект класса.
Если this указывает на объект, созданный в динамической памяти, к нему вполне допустимо применять конструкцию "delete this", что эквивалентно "delete ptr_to_object". Ни к каким побочным эффектам или неопределенному поведению это не приведет. Такая конструкция повсеместно используется, например, в COM. Там объект разрушает сам себя, когда его счетчик ссылок становится равным нулю.
1
|
|
| 13.06.2014, 21:35 | |
|
Помогаю со студенческими работами здесь
25
Как в переменную получить объект UI на который направлена мышь?
При попытке создать объект obj=Server.CreateObject('Name.ClassName') Возникает ошибка, 'Объект не поддерживает это свойство или метод.' Как реализовать метод, который превратит любой объект в byte[] ? Как создать объект, который будет известен только в рантайме? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
[golang] Угол между стрелками часов
alhaos 12.05.2026
По заданным значениям часа и минуты необходимо определить значение меньшего угла между стрелками аналогового циферблата часов.
import "math"
func angleClock(hour int, minutes int) float64 {
. . .
|
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo
https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html
и его же старой инструкции по установке Lazarus с gtk2. . .
|
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер.
Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
|
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта
Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
|
|
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром.
возможно получится прикрутить интерпретатор питон для кастомизации игровой логики.
что есть на текущий момент:. . .
|
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2.
Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
|
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
|
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2.
Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
|