【问题标题】:How to create pointers Unreal Engine 4?虚幻引擎4如何创建指针?
【发布时间】:2015-07-11 13:04:54
【问题描述】:

在可蓝图类中,我将指针定义为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吗?但是调用这个方法后我需要这个指针。

【问题讨论】:

    标签: c++ pointers c++11 unreal-engine4 null-pointer


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      • 2020-07-24
      • 2015-02-04
      • 1970-01-01
      • 2021-06-06
      相关资源
      最近更新 更多