C ++在另一个Class if语句中使用Class返回函数

时间:2014-04-07 04:25:55

标签: c++

好吧,我已经有一段时间遇到这个问题了,我相信我已经指出了问题所针对的地方,但我不确定如何修复它。

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
    {}


}

我的问题似乎与效果有关.GetEffect在StatusEffect类中返回函数。如果我问(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);
};

我希望我能很好地解释我的问题。我读到的所有内容似乎都没有帮助我解决这个问题。

2 个答案:

答案 0 :(得分:1)

Unit::AddStatusEffect中,将effect.GetEffect替换为effect.GetEffect()

effect.GetEffecteffect.GetEffect()之间的区别在于第一个求值为指向成员函数的指针(函数未被调用),而第二个求值为函数调用的返回值。

答案 1 :(得分:0)

你必须通过添加括号来调用方法或函数,即使没有参数。

effect.GetEffect()