2016-05-03 10 views
0

Ich versuche auf eine Variable aus einer separaten Klasse zuzugreifen, und ich bekomme einen Fehler.Unreal 4 illegaler Verweis auf nicht-statische Mitglied

if (bSprinting){ 

     UPlayerPawnMovementComponent::movementSpeedMultiplier = 500.0f; 
} 

wo der Fehler aus dem movementSpeedMultiplier welche kommt, wenn ich über schweben sagt: ein nicht statisch Bezug auf ein bestimmtes Objekt relativ sein muss.

die betreffende Variable ist diese hier:

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

float movementSpeedMultiplier = 150.0f; 

Ich weiß, dass dies nicht funktioniert, bin ich einfach total ratlos, wie die Variable editierbar in beiden Klassen zu machen.

Vielen Dank im Voraus

+0

verwenden 'movementSpeedMultiplier' Sie eine Instanz von' UPlayerPawnMovementComponent' – drescherjm

+4

müssen *** Ich bin bei nur völlig ratlos, wie in beiden Klassen die Variable editierbar zu machen. *** Vielleicht auf das Lernen zu konzentrieren, seine Zeit 'C++', bevor Sie versuchen, eine komplexe 'C++' -Spielengine zu modifizieren. – drescherjm

+4

Das Lernen von C++ durch Versuch und Irrtum funktioniert leider nicht allzu gut. Sie sollten es stattdessen systematisch von einem guten Buch lernen. –

Antwort

0

Erfahren Sie mehr über static members.
Eine entrahmte abgespeckte Version des Problems könnte wie folgt aussehen:

struct A{ 
    float movementSpeedMultiplier; 
}; 

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

Einstellen des Datenelements zu statisch, können Sie das Mitglied ohne Instanziierung zuzugreifen.

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

int main(){ 

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