【发布时间】: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的值分配给非constint的玩具程序来向自己证明这一点。跨度> -
图像和错误现在似乎与您的代码不一致。看来您已经显示了错误地尝试通过设置目标
const来解决此问题的结果,这显然是不可能的,并且未在您的代码 sn-p 中显示。请在未来提供一致且连贯的minimal reproducible example。 -
我只是更新它。这似乎是两个可能的问题的混合体..
-
函数参数
const与能否赋值给类成员Velocity0没有关系
标签: c++ unreal-engine4