c++ - (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。也许你们可以给我一个提示来实现这个甚至另一种方法来将此调用保存在变量中。
解决方案
为了单独声明一个 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
推荐阅读
- ansible - 根据条件创建字典
- eiffel - 埃菲尔:创建可重新定义的“常数”的最佳方式
- python - 如何禁用定义了页面标题的 GtkAssistant 侧边栏?
- javascript - 按字母顺序排序下拉菜单
- java - 查询 JpaRepository 以将其传递给控制器
- c# - 从 Razor Pages 应用程序向 API 发送 HTTP 请求
- java - 如何将 JLabel 转换为字符串,反之亦然?
- powershell - PowerShell Hashtable 显示第一个键
- google-sheets-api - 从 Zoho Deluge 函数调用 Google Sheets API:API 密钥和身份验证凭证来自不同的项目
- android - 如何在Android kotlin中使用HandlerThread的onLooperPrepared?