如何创建指针Unreal Engine 4?

How to create pointers Unreal Engine 4?

在 blueprintable class 中,我将指针定义在 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 的行为方式。