使用类计数器显示对象数

时间:2016-02-20 20:42:35

标签: c++ count

我有一个可以创建许多对象的类。

class Employee{
public:
        string firstName;
        string lastName;
        string gender;//gender - if necesary
        string identificationCode;//an Id for every employee
        string typeOfEmployee;//is Programmer, is Tester and so on...

        string getFirstName(){ return this->firstName; } //show the name
        string getLastName(){ return this->lastName; }//show the name
        string getGender(){ return this->gender; }//show the gender - if necesary
        string getID(){ return this->identificationCode; }//show ID
        string getTypeOfEmployee(){ return this->typeOfEmployee; }//show type of job
};


class Programmer : public Employee{
public:
    vector<string> knownLanguages;//array of known programming languages
    unsigned int countProgrammers;
}programmer[5];

Programmer::Programmer()
{
countProgrammers++;
}

int main(){...

    switch (checkJob(getTokens[3]))
    {
    case 1:
        Programmer programmer[counter];//this is error = expression must be a value
        programmer[counter].identificationCode = getTokens[0];
        programmer[counter].firstName = getTokens[1];
        programmer[counter].lastName = getTokens[2];
        programmer[counter].typeOfEmployee = getTokens[3];
        programmer[counter].knownLanguagessplitString(getTokens[4],                 SecondDelimiter);

        //cout << programmer[counter].firstName<<" " << programmer[counter].lastName<<" with ID: " << programmer[counter].identificationCode<<" is a "<<programmer[counter].typeOfEmployee<<" and knows " << endl;
        counter++;
        break;


...}

我想要使用一个计数器,当创建一个新对象时,或者当我使用流控制结构向对象添加更多细节时,无论如何,我想要增加它。 我的偏好是我想把它留在课堂里。 到目前为止,我已经定义了countProgrammers,但由于我使用programmer[1]等等,因此对于我创建的每个程序员来说,这将是一个不同的值。 有没有办法将变量保留在类中,但是主动向我显示我创建的总对象数,如果我将其称为 cout<<programmer.countProgrammers;(这是正确的,因为我已经定义了类,正确的方法应该是cout<<programmer[1].countProgrammers;,但是它会为创建的wach对象显示不同的值,例如,第三个对象它将是3,依此类推)//已解决

1 个答案:

答案 0 :(得分:0)

您必须将变量声明为static

static unsigned int countProgrammers;

然后在构造函数的主体中

Programmer::Programmer()
{
    ++countProgrammers;
}

这样,每次构造Programmer时,变量都会递增。

要打印此值,您可以说

std::cout << Programmer::countProgrammers << std::endl;