2014-04-07 2 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) 아무런 오류가 없기 때문에 나는 그 기능이 문제라고 믿는다. 내가 얻는 오류는 다음과 같다.

함수 호출 누락 인수 목록;

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); 
}; 

내가 아니라 내 문제를 설명하겠습니다 (여기에서 문제가 될 수있다 뭔가가있을 경우에 클래스) 멤버에 대한 포인터를 만드는 '& StatusEffect :: GetEffect'를 사용 충분히. 내가 읽은 모든 것은이 문제를 해결하는 데 도움이되지 않았다. Unit::AddStatusEffect에서

답변

1

, effect.GetEffect()

의해 effect.GetEffect 대체 effect.GetEffecteffect.GetEffect() 차이점은 첫 번째 (함수가 호출되지 않음) 멤버 함수에의 포인터로 평가이다 동안의 리턴 값에 대한 제 평가하여 함수 호출.

+0

나는 지금 바보가된다. 고맙다. – Uulamock

+0

@Uulamock 우리 대부분은 어리석은 실수를 저질렀습니다. 기분 나빠하지 마. 다행히 도울 수있어. –

+0

그래, 나는 바보 같은 실수를 많이 겪어 왔지만, 나는 항상 그들 자신을 발견했다. 이것은 내가 보지 못한 첫 번째 어리석은 실수입니다. >. < – Uulamock

0

인수가없는 경우에도 괄호를 추가하여 메서드 또는 함수를 호출해야합니다.

+0

나는 지금 바보 같아 ..... 고마워. – Uulamock