在模板类构造函数中创建计数器

时间:2019-03-22 19:06:21

标签: c++ class static-variables

我被困在一个家庭作业问题上。我们将创建一个名为Department的类模板,并在构造函数中,我们需要初始化一个计数器以供以后使用。我在理解如何在程序的其他地方使用此计数器时遇到麻烦。我们提供了一个main.cpp文件供您使用,我们不允许对其进行更改。这些是我要遵守的具体说明:

  

您要创建一个可以将部门名称作为参数的构造函数,如果该参数为null,它将要求从键盘输入部门名称并将其存储。它还会初始化一个计数器,该计数器跟踪阵列中的雇员数量,并在您添加,删除或清除时​​维护该计数器。

我设法使其起作用的唯一方法是将构造函数设置为接受两个参数,一个用于部门名称,一个用于计数器。但是提供的main.cpp文件仅允许使用一个参数,即名称。

Department.h:

template <class Type>
class Department {

  private:
    std::string name;
   ...

  public:
  Department(const std::string & deptName)
  {
    int counter = 0;
    name = deptName;
  }
... 
};

Main.cpp(已提供,不允许更改):

int main()
{   Department dept1("CIS");   // a department
...

是否有一种方法可以使用在构造函数之外的构造函数中初始化的计数器,而无需更改Department的参数要求?

1 个答案:

答案 0 :(得分:3)

  

是否有一种方法可以使用在构造函数之外的构造函数中初始化的计数器,而无需更改Department的参数要求?

好的。创建一个计数器成员变量,并将其用于为类编写的方法中。

template <class Type>
class Department {

private:
  std::string name;
  int counter;

public:
  Department(const std::string & deptName)
  {
    counter = 0;     // note `int` not needed, as counter is already declared
    name = deptName;
  }

  int getCounter()
  {
    return counter;
  }

  void addEmployee(std::string name)
  {
    counter++;
    // do something with adding employees
  }

  // other methods
};