Size: a a a

2019 February 19

AR

Anton Rassadin in Unreal Engine
Alexey Sarapulov
Я сейчас прошелся дебагером. Деструктор вызывается. То есть, объект удаляется.
Тогда проблемы нет?)
источник

AS

Alexey Sarapulov in Unreal Engine
Anton Rassadin
Тогда проблемы нет?)
Проблема есть, но она видимо другая )=
Увидел в коде, что Weak Pointer тоже освобождается.
источник

AS

Alexey Sarapulov in Unreal Engine
источник

AS

Alexander Shumeyko in Unreal Engine
Alexey Sarapulov
Проблема есть, но она видимо другая )=
Увидел в коде, что Weak Pointer тоже освобождается.
Хорошо бы сначала изучить семантику смарт поинтеров, почитай тут https://eax.me/cpp-smart-pointers/, и еще вроде у Майерса в Современном с++ описано как работать с ними, да и вообще инфы очень много
источник

AS

Alexey Sarapulov in Unreal Engine
Вся моя проблема началась вот с этого эксепшена. И я не могу понять его природу.
источник

AS

Alexey Sarapulov in Unreal Engine
Спасибо, Мейерса как раз сейчас читаю одну из его книг.
источник

BB

Borm Borm in Unreal Engine
Alexey Sarapulov
Хм, тогда подскажите, как мне поступить. Я создаю этот объект, и потом присваиваю указатель на него двум Shared Pointer. Через какое-то время у обоих этих Shared Pointer я вызываю Reset(). Когда я вызываю последний Reset() я хочу, чтобы объект удалялся. Но, похоже, он не удаляется из-за того, что на него указывает Weak Pointer.
После сборки мусора удалится если на него нет ссылок
источник

AS

Alexey Sarapulov in Unreal Engine
Хм, я отчасти справился со своей проблемой (выложил выше скриншот), когда добавил в деструктор вот эти строки:
if (IsValidLowLevelFast())
{
 ConditionalBeginDestroy();
}
Теперь объект со сцены удаляется без эксепшена. Зато возникает эксепшен при закрытии редактора, когда освобождаются ресурсы.
Я не уверен, что вызывать ConditionalBeginDestroy в деструкторе - корректно.
источник

AR

Alexey Rodionov in Unreal Engine
Alexey Sarapulov
Визуально вижу на сцене.
В классе нет указателей, и я так понимаю, все должно само адекватно уничтожиться.
ты актор в TSharedPtr пихаешь что-ли?
источник

AS

Alexey Sarapulov in Unreal Engine
Alexey Rodionov
ты актор в TSharedPtr пихаешь что-ли?
Далекий наследник UPrimitiveComponent
источник

AS

Alexey Sarapulov in Unreal Engine
источник

AS

Alexey Sarapulov in Unreal Engine
Актор компонент
источник

BB

Borm Borm in Unreal Engine
Разве можно tsharedptr использовать с uobject?
источник

AR

Alexey Rodionov in Unreal Engine
так TSharedPtr не для UObject'ов
источник

BB

Borm Borm in Unreal Engine
Чет засомневался
источник

AS

Alexey Sarapulov in Unreal Engine
Как тогда еще можно автоматически управлять памятью?
Класс, в котором я использую этот созданный объект, не является наследником от UObject. И я так понимаю, макрос UPROPERTY в этом случае игнорируется.
источник

BB

Borm Borm in Unreal Engine
Что за класс?
источник

AS

Alexey Sarapulov in Unreal Engine
Borm Borm
Что за класс?
Просто который я сам написал. Он ни от чего не наследуется.
источник

МТ

Михаил Турутанов... in Unreal Engine
Alexey Sarapulov
Просто который я сам написал. Он ни от чего не наследуется.
Наследовать от юобжект, очевидно
источник

BB

Borm Borm in Unreal Engine
Обычный c++ класс без UCLASS?
источник