You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将类成员方法指针赋值给TFunction<>类型的对象?

问题原因

非静态类成员函数存在隐含的this指针入参,你定义的void PlayerController::ClassMethod()实际完整签名等效于void ClassMethod(PlayerController* this),和你声明的TFunction<void()>无参返回空的签名不匹配,无法直接绑定。

可行解决方案

  • 方案1:使用Lambda捕获类实例后绑定,适合在类内部初始化TFunction的场景
// 假设你在PlayerController类内部赋值,用this捕获当前实例
TFunction<void()> FuncPtr = [this]() {
    // 可选:增加UObject有效性校验,避免实例被销毁后调用触发崩溃
    if (IsValid(this)) {
        ClassMethod();
    }
};
  • 方案2:如果你需要在类外部绑定,传入目标PlayerController实例即可
// 假设外部已经持有有效PlayerController实例指针,变量名为TargetPC
TFunction<void()> FuncPtr = [TargetPC]() {
    if (IsValid(TargetPC)) {
        TargetPC->ClassMethod();
    }
};
  • 如果你确实不需要绑定实例,可以把ClassMethod改为静态成员函数,此时可以直接用你原来的写法绑定,不需要额外捕获实例。

内容的提问来源于stack exchange,提问作者GigaKox69

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 13:15:03