我有一个可以创建许多对象的类。
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,依此类推)//已解决
答案 0 :(得分:0)
您必须将变量声明为static
static unsigned int countProgrammers;
然后在构造函数的主体中
Programmer::Programmer()
{
++countProgrammers;
}
这样,每次构造Programmer
时,变量都会递增。
要打印此值,您可以说
std::cout << Programmer::countProgrammers << std::endl;