我想创建一个指向函数的链接,因为它每次都是很长的调用链。
typedef void(*PlayerVP)(FVector&, FRotator&);
PlayerVP VP = &GetWorld()->GetFirstPlayerController()->GetPlayerViewPoint;
结果,错误:
错误 C2276:“&”:对绑定成员函数表达式的非法操作
如果你拿走&符号,那么另一个错误:
错误 C3867:“APlayerController::GetPlayerViewPoint”:非标准语法;使用 '&' 创建指向成员的指针
函数本身的签名GetPlayerViewPoint
:
void AController::GetPlayerViewPoint( FVector& out_Location, FRotator& out_Rotation ) const
函数指针不能与非静态方法(“成员函数”)一起使用。
正如评论中所指出的,在这里使用指向类成员的指针是没有意义的。有了它们,代码并不是特别短。
最好使用另一个选项 - 保留对链中最后一个对象的引用:
或制作一个 lambda: