繁体   English   中英

如何创建虚幻引擎4指针?

[英]How to create pointers Unreal Engine 4?

在可蓝图的类中,我在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使TSharedPtr 为了使它保持持久性,您必须在函数外部创建对象,然后将TSharedPointer指向它。

您可能应该做的只是在对象级别初始化它,然后仅使用函数更改值,而不是尝试在函数内部创建它。

MakeShareable只是使从C ++样式指针显式转换为TSharedPtr成为可能,而实际上并没有改变TSharedPtr的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM