2016-05-03 1 views
0

J'essaie d'accéder à une variable d'une classe distincte, et j'obtiens une erreur.Unreal 4 référence illégale à un membre non statique

if (bSprinting){ 

     UPlayerPawnMovementComponent::movementSpeedMultiplier = 500.0f; 
} 

où l'erreur provient du movementSpeedMultiplier qui quand je passe la souris sur dit: une référence non statique doit être par rapport à un objet spécifique.

la variable en question est celle-ci ici:

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

float movementSpeedMultiplier = 150.0f; 

Je sais que cela ne fonctionne pas, je suis juste totalement perplexe sur la façon de rendre la éditable variable dans les deux classes.

Merci à l'avance

+0

Pour utiliser 'movementSpeedMultiplier' vous avez besoin d'une instance de' UPlayerPawnMovementComponent' – drescherjm

+4

*** Je suis juste totalement perplexe sur la façon de rendre la éditable variable dans les deux classes. *** Peut-être que son temps de se concentrer sur l'apprentissage 'C++' avant d'essayer de modifier un moteur de jeu complexe 'C++'. – drescherjm

+4

Malheureusement, l'apprentissage C++ par essais et erreurs ne fonctionne pas très bien. Vous devriez l'apprendre systématiquement à partir d'un bon livre à la place. –

Répondre

0

En savoir plus sur static members.
A écrémé descendant de votre problème pourrait ressembler à ceci:

struct A{ 
    float movementSpeedMultiplier; 
}; 

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

Réglage du membre de données statiques, vous permettra d'accéder au membre sans instanciation.

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

int main(){ 

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