首页 > 解决方案 > (UE4) 在头部保存一个 lambda 函数

问题描述

我目前正在定义一个要保存在头文件中的 lamda 函数。

void FURealisticGraspingEditorModule::OnPreviewCreation(const TSharedRef<IPersonaPreviewScene>& InPreviewScene)
{
    TSharedRef<IPersonaToolkit> PersonaToolKitRef = InPreviewScene.Get().GetPersonaToolkit();
    auto lambda = [PersonaToolKitRef]() { return PersonaToolKitRef.Get(); };
    DebugMeshComponent = PersonaToolKitRef.Get().GetPreviewMeshComponent();
}

lamda 变量应该保存在标题中。我还没有做到这一点,现在我很好奇这是否可能。我尝试了自动和 TFunctionRef。也许你们可以给我一个提示来实现这个甚至另一种方法来将此调用保存在变量中。

标签: c++unreal-engine4

解决方案


为了单独声明一个 lambda 变量而不是初始化它,您需要将它存储在std::function. lambda 的类型仅在您创建它时才知道,因此无法声明一个变量来单独存储它。

例如:

auto a = []{ return 1; }; // OK

auto b; // invalid, can't declare as auto as the type can't be deduced
b = []{ return 1; };

std::function< bool() > c;
c = []{ return 1; }; // OK, we can store a lambda in std::function

推荐阅读