计数器函数不基于先前返回的值

时间:2012-12-19 04:34:30

标签: c++ constructor while-loop counter

第一个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;
}

我的倾向是,一旦从函数返回值,那就是它。它将不再保持此前的值bc(我的猜测)。

2 个答案:

答案 0 :(得分:3)

您只需将Checker object1移到循环之外;正如代码所代表的那样,每次传递都会创建一个新的实例,其数量为零。

答案 1 :(得分:0)

作为评论,count不是Check类的staic成员,Checker object1;始终创建一个新对象并将计数初始化为0。 make count static应该使你的getCount()滚动。

class Checker
{
   static int count;
};

在Checker.cpp初始化计数

int Check::count = 0;