好吧,我已经有一段时间遇到这个问题了,我相信我已经指出了问题所针对的地方,但我不确定如何修复它。
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);
};
我希望我能很好地解释我的问题。我读到的所有内容似乎都没有帮助我解决这个问题。
答案 0 :(得分:1)
在Unit::AddStatusEffect
中,将effect.GetEffect
替换为effect.GetEffect()
effect.GetEffect
和effect.GetEffect()
之间的区别在于第一个求值为指向成员函数的指针(函数未被调用),而第二个求值为函数调用的返回值。
答案 1 :(得分:0)
你必须通过添加括号来调用方法或函数,即使没有参数。
effect.GetEffect()