我正在虚幻中从事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 那么有可能进行此价值转移吗?
答案 0 :(得分:0)
问题是方法ComputeAcceleration
本身被标记为const
,但是您正在尝试修改方法中的成员变量。
FVector
肯定有一个赋值运算符,没有一个赋值运算符将毫无用处。