template<typename T>
T Avg(T Frist, T Second);
在头文件声明模板函数<类型名称 参数名称>
模板参数名称一般使用T
T 使用平均公式,其接收两个参数
在每次使用Avg函数时,首先需要声明T的类型。
template<typename T>
inline T AItem::Avg(T Frist, T Second)//接受任何T类型的参数(类型需要支持加减乘除)
{
return T(Frist+Second)/2;
}
在CPP文件中定义函数
inline:每次调用它都会换成我们在<>中声明的函数类型
-----------------------------------------------------------------------------------------------------
接下来调用已经设置好的Avg模板函数
int32 AvgInt=Avg<int32>(1, 3);//Avg是预设函数,<>里面是类型声明,加入参数进行平均数计算
UE_LOG(LogTemp, Warning, TEXT("1 and 3 Avg = %d"), AvgInt);
float AvgFloat = Avg<float>(3.36f, 7.78f);//创建一个类型的形参,接收返回值。
UE_LOG(LogTemp, Warning, TEXT("3.36 and 7.78 Avg = %f"), AvgFloat);
创建了相同返回值类型的参数接收这个值,下方为日志中打印函数。
FVector AvgVector = Avg<FVector>(GetActorLocation(), FVector::ZeroVector);
DRAW_POINT_SingleFrame(AvgVector);
也可以计算向量的平均值(坐标):计算Actor位置与Actor的零点坐标的中点
用调试点打印出来。
但旋转器(Rotator)没有除法运算符。无法进行计算,将Rotator相除是没有意义的。