c ++如何从const参数获取值并将其分配给非const变量

时间:2018-11-23 23:12:17

标签: c++ unreal-engine4

我正在虚幻中从事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没有“ =”操作数, enter image description here 但我可以为其元素分配值。 但是,它仍然失败,这是由const引起的。 enter image description here 因此,我想删除所有const关键字来解决问题,但仍然无法解决。也许因为基类在那里有一个const,所以我必须在函数的参数列表后面和重写之前添加一个const。 enter image description here 那么有可能进行此价值转移吗?

1 个答案:

答案 0 :(得分:0)

问题是方法ComputeAcceleration本身被标记为const,但是您正在尝试修改方法中的成员变量。

FVector肯定有一个赋值运算符,没有一个赋值运算符将毫无用处。