TScriptInterface<> nullptr автоматически перестает быть нулевымC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 TScriptInterface<> nullptr автоматически перестает быть нулевым

Сообщение Anonymous »

В моем проекте Unreal Engine 5 возникла проблема с указателем TScriptInterface.
Вот мой класс IFBloc:

Код: Выделить всё

class IFBloc {
GENERATED_BODY()

public:
IFBloc() {
UE_LOG(LogTemp, Warning, TEXT("Constructor: next object after init is %s"), next.GetObject() ? TEXT("valid") : TEXT("nullptr"));
}
TScriptInterface next = nullptr;

UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Bloc")
void CleanChainedList();

void CleanChainedList_Implementation()
{
UE_LOG(LogTemp, Warning, TEXT("chained list: next object is %s"), next.GetObject() ? TEXT("valid") : TEXT("nullptr"));
UObject* Object = next.GetObject();
if (Object != nullptr && next != nullptr) {
UE_LOG(LogTemp, Warning, TEXT("Object not null"));
// if (Object->GetClass()->ImplementsInterface(UFBloc::StaticClass()))
// {
//     // IFBloc::Execute_CleanChainedList(Object);
// }
}
next.SetObject(nullptr);
}

// other functions
};
Когда я просто делаю это с помощью своего кода Blueprint (Action Shoot наследует от FBloc):
Изображение

Вот моя консоль журнала:

Код: Выделить всё

Constructor: next object after init is nullptr
chained list: next object is valid
Object not null
Я не понимаю, как возможно, что моя «следующая» переменная изменит значение и станет не нулевой после вызова моей функции, даже если я больше ничего не делаю, чтобы присвоить значение этой переменной< /p>
Когда я пытаюсь что-то сделать с новым присвоенным значением, например распечатать его, Unreal Engine аварийно завершает работу.
Вы хоть представляете, как получается моя переменная? значение без какой-либо причины или другая проверка, которую я могу сделать, чтобы быть действительно уверенным что я никогда не присваивал значение этой переменной?

Подробнее здесь: https://stackoverflow.com/questions/793 ... being-null
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»