2014-04-07 72 views
1

好吧,我一直有這個問題一段時間,我相信我已經針對問題的位置,但我不知道如何解決它。C++在另一個類if語句中使用類返回函數

void Unit::AddStatusEffect(StatusEffect effect) 
{ 
    // Add status effect and if it effects what actions a unit can do, do it here. 
    myEffects.push_back(effect); 

    if(effect.GetEffect == effect.STUN) 
    { 
     myCanMove = false; 
     myCanAttack = false; 
     myCanCast = false; 
    } 
    else if (effect.GetEffect == effect.MUTE) 
    { 
     myCanCast = false; 
    } 
    else if (effect.GetEffect == effect.BLIND) 
    { 
     myCanHit = false; 
    } 
    else 
    {} 


} 

我的問題似乎與StatusEffect類中的Effect.GetEffect返回函數。如果我問如果(effect.STUN == effect.STUN)我沒有得到任何錯誤,這就是爲什麼我認爲這個功能是問題。我得到的錯誤似乎是:

函數調用缺少參數列表;使用「& StatusEffect :: GetEffect」創建一個指向成員

(這裏是在情況下,類有東西在那裏,可能是問題)

class StatusEffect 
{ 
public: 
    enum Effect { POISON, BURN, BLEED, FREEZE, MUTE, STUN, BLIND, ATKBOOST, HPREGEN, MANAREGEN, MATKBOOST, DEFENSEBOOST, MAGICDEFENSEBOOST }; 

private: 
Effect myEffect; 

public: 
//////////////////////////////////////////////////////////////// 
// Data Retrievers 
//////////////////////////////////////////////////////////////// 

Effect const GetEffect() { return myEffect; } 



StatusEffect(void); 
~StatusEffect(void); 
}; 

我希望我解釋我的問題以及足夠。我讀過的所有內容似乎都沒有幫助我解決這個問題。

回答

1

Unit::AddStatusEffect,通過effect.GetEffect()

取代effect.GetEffecteffect.GetEffecteffect.GetEffect()之間的區別是,第一計算結果爲一個指針指向一個成員函數(函數不被調用),而第二計算結果爲的返回值函數調用。

+0

我現在覺得很愚蠢.....謝謝。 – Uulamock

+0

@Uulamock我們大多數人都經歷了足夠的愚蠢錯誤。不要感覺不好。很高興我能幫上忙。 –

+0

是的,我有很多愚蠢的錯誤,但我總是發現他們自己。所以這是我沒有看到的第一個愚蠢的錯誤。 >。< – Uulamock

0

您必須通過添加圓括號來調用方法或函數,即使沒有參數。

effect.GetEffect() 
+0

我現在感覺非常愚蠢.....謝謝。 – Uulamock