2016-05-03 7 views
0

別のクラスから変数にアクセスしようとしていますが、エラーが発生しています。エラーは、私が上にマウスを移動movementSpeedMultiplierから来Unreal 4非静的メンバーへの不正な参照

if (bSprinting){ 

     UPlayerPawnMovementComponent::movementSpeedMultiplier = 500.0f; 
} 

は言う:非静的参照は、特定のオブジェクトに対して相対的でなければなりません。

問題の変数は、ここでは、このいずれかになります。

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

float movementSpeedMultiplier = 150.0f; 

私は、これは動作しません知っている、私は完全に両方のクラスに変数の編集可能なを作成する方法で困惑。事前に

おかげで

+0

あなたは 'UPlayerPawnMovementComponent' – drescherjm

+4

のインスタンスが必要movementSpeedMultiplier''使用するには***私は完全に両方のクラスに変数の編集可能なを作成する方法で困惑。学習に集中する***たぶんその時複雑な 'C++ 'ゲームエンジンを修正しようとする前に' C++ 'を実行してください。 – drescherjm

+4

残念ながら、試行錯誤によるC++の学習はあまりうまくいきません。代わりによい本から系統的に学ぶべきです。 –

答えて

0

についてstatic membersこちらをご覧ください。
Aは次のようになりますあなたの問題のバージョンをダウン脱脂:

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; 
} 
関連する問題