[英]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.