2016-05-03 93 views
0

我試圖從一個單獨的類訪問變量,並且出現錯誤。虛幻4非法引用非靜態成員

if (bSprinting){ 

     UPlayerPawnMovementComponent::movementSpeedMultiplier = 500.0f; 
} 

其中誤差來源於movementSpeedMultiplier其中當我懸停在說:非靜態引用必須是相對於一個特定對象。

有問題的變量是這樣一個位置:

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

float movementSpeedMultiplier = 150.0f; 

我知道這是不行的,我只是完全在如何使變量編輯這兩類難住了。

在此先感謝

+0

要movementSpeedMultiplier'你需要***我只是完全在如何使這兩類變量編輯難倒UPlayerPawnMovementComponent' – drescherjm

+4

的'實例使用'。***也許它的時間專注於學習在嘗試修改一個複雜的'C++'遊戲引擎之前''C++''。 – drescherjm

+4

不幸的是,通過試驗和錯誤學習C++並不能很好地工作。你應該從一本好書中系統地學習它。 –

回答

0

瞭解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; 
}