2012-12-19 3 views
1

첫 번째 if 문은 의심스러운 것으로 입력됩니다. 개체는 getCount() 함수를 호출하지만 증가 된 값은 이전 계수가 아니라 0입니다. 함수에서 Count + = Count를 사용하여 시도했습니다.카운터 함수는 이전에 반환 된 값에 따라 빌드되지 않습니다.

int main(){ 
    .........  
    int displayCount; 
    while(!inputfile.eof()) 
    { 

     inputfile.get(letter); 

      Checker object1; 
      if (object1.isValid(letter))) 
      { 
       displayCount = object1.getCount(); 
      } 
    } 
    cout << displayCount; 
    . 
    . 
    . 
Checker::Checker() : 
    m_Valid(false), 
    count(0) 
{ 
} 


int Checker::getCount() 
{ 

    if(m_Valid) 
    { 
     count ++; 
    } 

    return count; 
} 

필자의 경향은 일단 함수에서 값이 반환되면 그 것이다. 더 이상 이전 값 (이 추측)을 유지하지 않습니다.

+3

[루프에서 'eof()'를 사용하지 마십시오. (http://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong). – chris

+0

'm_Valid (false)'그러면'(m_Valid)'가 항상 false를 반환합니까? – billz

+0

Billz, 적용 가능한 경우 true를 반환하는 별도의 함수가 있기 때문에 항상 false를 반환하지는 않습니다. 나는 코드를 밟았으며 예상대로 진술이 진실이면 – user1727433

답변

3

당신은 단지 루프의 Checker object1 외부 이동해야합니다; 코드가 그대로 서서 각 패스마다 0의 카운트로 새로운 인스턴스가 생성됩니다.

+0

고마워, 그랬어. – user1727433

0

귀하의 의견대로 count은 검사 클래스의 일원이 아니므로 Checker object1;은 항상 새 개체를 만들고 0으로 카운트를 초기화합니다. 정적 인 카운트가 귀하의 getCount()을 회전시켜야합니다. Checker.cpp에서

class Checker 
{ 
    static int count; 
}; 

초기화 수

int Check::count = 0; 
+0

동적으로'object1'을 생성 할 필요가 없다면, 다른 답변이 내 것보다 낫습니다. – billz

+0

나는 그것을 동적으로 할 필요는 없지만 당신의 방법을 시도했다. 그것은 잘 작동했다. 감사! – user1727433

관련 문제