【问题标题】:Unreal 4 illegal reference to non-static member虚幻4非法引用非静态成员
【发布时间】:2016-05-03 22:55:48
【问题描述】:

我试图从一个单独的类中访问一个变量,但我遇到了一个错误。

    if (bSprinting){

        UPlayerPawnMovementComponent::movementSpeedMultiplier = 500.0f;
}

错误来自motionSpeedMultiplier,当我将鼠标悬停在上面时,它会说:非静态引用必须相对于特定对象。

有问题的变量在这里:

public:
virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override;

float movementSpeedMultiplier = 150.0f;

我知道这不起作用,我只是完全不知道如何使变量在两个类中都可编辑。

提前致谢

【问题讨论】:

  • 要使用movementSpeedMultiplier,您需要一个UPlayerPawnMovementComponent的实例
  • 我完全不知道如何让变量在两个类中都可编辑。 也许是时候专注于学习 c++ 之前你尝试修改一个复杂的c++ 游戏引擎。
  • 不幸的是,通过反复试验学习 C++ 并不能很好地工作。你应该从一本好书中系统地学习它。

标签: c++ unreal-engine4


【解决方案1】:

了解static members
您的问题的简要版本可能如下所示:

struct A{
   float movementSpeedMultiplier;
};

int main(){
  //error: invalid use of non-static data member ‘A::movementSpeedMultiplier’
  A::movementSpeedMultiplier = 500.0f;
} 

将数据成员设置为静态,将允许您在没有实例化的情况下访问该成员。

struct A{
   static float movementSpeedMultiplier;
};
float A::movementSpeedMultiplier;

int main(){

  //compiles
  A::movementSpeedMultiplier = 500.0f;
} 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 2016-05-20
    相关资源
    最近更新 更多