问题描述
我有一个组件,可以附加到我的角色产生的射弹上。 我想制作一个回调函数,当弹丸击中有效目标时调用该函数。
template<class T>
void OnTargetHit( void (T::*Callback)() );
在 Component.cpp 中是实现:
template<class T>
void UInterpolationComponent::OnTargetHit( void (T::*Callback)() )
{
(T::*Callback)();
}
现在在我的 Character.cpp 中,我想获取该组件并为其分配一个“回调”函数,该函数将在击中目标时触发,当然该组件可以应用于不同的 Actor,因此我想要从调用类传递一个函数,所以我提供了一个特定的实现:
AActor* Projectile = GetWorld()->SpawnActor<AActor>(PrimaryAttackProjectile_BP,GetActorLocation(),Rotation);
UInterpolationComponent* InterpComp = Cast<UInterpolationComponent>(Projectile->GetComponentByClass(UInterpolationComponent::Staticclass()));
InterpComp->InterpSpeed = 1800.f;
InterpComp->bHoming = false;
InterpComp->StaticTarget = Location;
InterpComp->bIsDestroyable = true;
InterpComp->OnTargetHit<ACartagraCharacter>(&Calculatedamage);
问题出在最后一行代码上:
InterpComp->OnTargetHit<ACartagraCharacter>(&Calculatedamage);
我不确定是否应该传递与号,如果我应该包含类名,我尝试了以下所有方法:
InterpComp->OnTargetHit<ACartagraCharacter>(Calculatedamage);
InterpComp->OnTargetHit<ACartagraCharacter>(&ACartagraCharacter::Calculatedamage);
它们都不起作用,要么给我一个&符号错误,要么在最后一种情况下出现它给我一个链接器错误。我也尝试使它们成为静态函数,但这并没有太大意义,因为组件是在每个生成的射弹上实例化的。 我是模板函数的新手,不知道该怎么做。请帮忙。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)