我想用相同的参数反射调用函数而不需要手动处理参数(将来这将是宏,这将是自动的)。
UFUNCTION()
void PleaseRespawnMe(FName className)
{
uint64 _frame; // Here is stack pointer?
UFunction* func = GetController()->ServerCheatManager->FindFunction("PleaseRespawnMe"); // function with same name
void* startStack = (void*)(&_frame - func->ParmsSize); // Start stack is pointer to first variable minus params size?
GetController()->ServerCheatManager->ProcessEvent(func, startStack); // calling using pointer of first argument
}
但是 &_frame
指针离 &className
太远了。是否有使用局部变量地址获取 args 指针的解决方案?
附言这是Unreal Engine 4框架(按名称调用函数是unreal反射系统)。
最佳答案
我通过搜索 FindFunction(
检查了代码并找到了这个:for (TFieldIterator<UProperty>
,我想这就是你想要的。
我用我的 UFUNCTION
测试了它迭代器遍历输入参数然后返回值。
我建议搜索for (TFieldIterator<UProperty>
或 for (TFieldIterator<UProperty> It(Function);
查看用例,并记下属性标志,这有助于过滤您正在寻找的特定属性。
关于c++ - 如何获取指向函数第一个参数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41869678/