如何创建指针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 的行为方式。
在 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 的行为方式。