【问题标题】:c++ how to get a value from a const parameter and assign it to a non-const variablec ++如何从const参数中获取值并将其分配给非常量变量
【发布时间】:2018-11-23 23:12:17
【问题描述】:

我正在使用 Unreal 开发一个 cpp 项目。 我知道人们喜欢在任何地方使用 const 和 & 来提高效率, 但它们使得在函数中传递值变得困难。

我从 UE4 的弹丸计算组件类创建了一个派生类 父类将调用计算加速度函数并传递弹丸当前速度的参考 我在派生类(UNewActorComponent)中定义了一个单独的UPROPERTY Velocity0,我想将它暴露给蓝图以报告弹丸速度,因为在我修改加速函数后,原来的速度变量似乎被破坏了,它被打印为inf。 我想从 ComputeAcceleration(const FVector & InVelocity, float DeltaTime) 中的 InVelocity 参数中分配它的值

这是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 那么是否可以进行这种价值转移呢?

【问题讨论】:

  • 我忘记上传图片了...我认为将 const 参数分配给变量可能需要进行其他对话
  • 不知道你为什么这么想。您可以通过 (a) 将 InVelocity 设为非const 或 (b) 将 const int 的值分配给非const int 的玩具程序来向自己证明这一点。跨度>
  • 图像和错误现在似乎与您的代码不一致。看来您已经显示了错误地尝试通过设置目标 const 来解决此问题的结果,这显然是不可能的,并且未在您的代码 sn-p 中显示。请在未来提供一致且连贯的minimal reproducible example
  • 我只是更新它。这似乎是两个可能的问题的混合体..
  • 函数参数const与能否赋值给类成员Velocity0没有关系

标签: c++ unreal-engine4


【解决方案1】:

问题在于方法ComputeAcceleration 本身被标记为const,而您却试图修改该方法中的成员变量。

FVector 肯定有赋值操作符,没有的话就没用了。

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 1970-01-01
    • 2020-08-07
    • 2021-12-05
    • 2020-11-07
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    相关资源
    最近更新 更多