C++虚构引擎封装委托 我是虚幻引擎和C++的新手。我有一个类,在该类中我定义了一个具有一个参数和一个返回类型的委托: DECLARE_DELEGATE_RetVal_OneParambool、FInteractionValidatorDelegate、APlayerController*

C++虚构引擎封装委托 我是虚幻引擎和C++的新手。我有一个类,在该类中我定义了一个具有一个参数和一个返回类型的委托: DECLARE_DELEGATE_RetVal_OneParambool、FInteractionValidatorDelegate、APlayerController*,c++,unreal-engine4,C++,Unreal Engine4,我添加了一个包含此委托的属性: FinterActionValidator委托验证程序; 在另一个类中,我绑定委托: SomeComponent->Validator.BindUObjectthis,&ainterractable::IsValid 这一切都很好,但我不想公开委托,因此我想通过向组件添加BindValidator方法来封装它。执行此操作的最佳方法是什么?您可以编写如下函数: void yourComponent::BindValidator(UObject * obj, void

我添加了一个包含此委托的属性:

FinterActionValidator委托验证程序; 在另一个类中,我绑定委托:

SomeComponent->Validator.BindUObjectthis,&ainterractable::IsValid
这一切都很好,但我不想公开委托,因此我想通过向组件添加BindValidator方法来封装它。执行此操作的最佳方法是什么?

您可以编写如下函数:

void yourComponent::BindValidator(UObject * obj, void(*func)(bool))
{
    Validator.BindUObject(obj, func);
}
但我建议不要这样做,首先因为传递函数的指针会导致错误,因为很难找到委托已经足够模糊了,有很多宏和生成的函数,而且您也无法将其公开给蓝图

在UE4的工作方式中,您可以将一个委托作为FName传递 像这样:

void yourComponent::BindValidator(UObject * obj, FName functionName)
{
    Validator.BindUFunction(obj, functionName);
}
这里是UE4进行函数声明匹配

希望这有帮助