我正在Unreal中处理一个cpp项目。我知道人们喜欢用const和&处处提高效率,但是它们使得在函数中传递值变得困难。
我从UE4的射弹计算组件类创建了一个派生类父类将调用计算加速度函数,并传递炮弹当前速度的参考我在派生类(UNewActorComponent(中定义了一个单独的UPROPERTY Velocity0,我想将其暴露在蓝图中以报告射弹速度,因为在我修改加速度函数后,原始速度变量似乎被破坏了,它被打印为inf。我想从ComputeAcceleration中的参数InVelocity(const FVector&InVelocity,float DeltaTime(中指定其值
这是cpp文件(减少到最小系统(
FVector UNewActorComponent::ComputeAcceleration(const FVector & InVelocity, float DeltaTime) const
{
FVector Acceleration(FVector::ZeroVector);
Velocity0=InVelocity;
return Acceleration;
}
这是标题
UCLASS(ClassGroup = Movement, meta = (BlueprintSpawnableComponent), ShowCategories = (Velocity))
class SHIPTEST_API UNewActorComponent : public UProjectileMovementComponent
{
GENERATED_BODY()
public:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Projectile)
FVector Velocity0;
protected:
FVector ComputeAcceleration(const FVector& InVelocity, float DeltaTime) const override;
};
显然,这是错误的,UE4的FVector没有"="操作数,在此处输入图像描述但是我可以为它的元素赋值。然而,它仍然失败了,这是由const的事情引起的。。。。在此处输入图像描述所以我想删除所有的const关键字来解决这个问题,但仍然无法解决。也许是因为基类有一个const,所以我必须在函数的参数列表后面和重写之前添加一个const在此处输入图像描述那么有可能进行这种价值转移吗?
问题是方法ComputeAcceleration
本身被标记为const
,但您正试图修改该方法中的成员变量。
FVector
肯定有一个赋值运算符,如果没有赋值运算符,它将毫无用处。