c++如何从const参数中获取值并将其赋给一个非常量变量



我正在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肯定有一个赋值运算符,如果没有赋值运算符,它将毫无用处。

最新更新