如何获得指向第一个arg函数的指针?

时间:2017-01-26 08:47:02

标签: c++ memory reflection stack unreal-engine4

我想用相同的参数反映调用函数而不用手动复制params(以后这将是宏,这将是自动的)。

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指针的解决方案?

P.S。这是虚幻引擎4框架(按名称调用函数是虚幻的反射系统)。

1 个答案:

答案 0 :(得分:0)

我通过搜索FindFunction(检查了代码,发现了这个:for (TFieldIterator<UProperty>,我认为这就是你想要的。

我用UFUNCTION测试了它,迭代器运行输入参数然后返回值。

我建议您搜索for (TFieldIterator<UProperty>for (TFieldIterator<UProperty> It(Function);以查看用例,并注意属性标记,这有助于过滤您正在寻找的特定属性。