如何创建指针虚幻引擎4

How to create pointers Unreal Engine 4?

本文关键字:引擎 指针 何创建 创建      更新时间:2023-10-16

在blueprintable类中,我在FJsonValue定义了指针。

private:
    TSharedPtr<FJsonValue, ESPMode::ThreadSafe> JsonValue;

调用分配内存的方法后,我得到了空对象…

void UDictValue::SetInt(float value)
{
    ValueType = EDictValueType::VT_INT;
    JsonValue = MakeShareable(new FJsonValueNumber(value));
    GEngine->AddOnScreenDebugMessage(-1, 15.0f, FColor::Red, "test");
}

MakeShareable实际上分配了新的内存。调试器说地址在哪里被分配…但从函数返回后,指针立即下降(JsonValue = NULL)

什么错了吗?这是GC吗?但是在调用这个方法之后我需要这个指针

您正在函数内部创建对象,并使用MakeShareable将其分配给TSharedPtr。一旦函数超出作用域,创建的对象就会被销毁,使TSharedPtr为空。为了使它保持持久,您必须在函数外部创建对象,然后将TSharedPointer指向它。

你可能应该做的是在对象级别初始化它,然后在你的函数中改变它的值,而不是试图在函数中创建它。

MakeShareable只是使从c++风格指针显式转换为TSharedPtr成为可能,它实际上并不改变TSharedPtr的行为。