Создание счетчика внутри конструктора класса шаблона - PullRequest
0 голосов
/ 22 марта 2019

Я застрял на домашнем задании. Мы должны создать шаблон класса с именем Department, а в конструкторе нам нужно инициализировать счетчик, который будет использоваться позже. У меня проблемы с пониманием, как использовать этот счетчик в другом месте в программе. Нам был предоставлен файл main.cpp, который мы не можем изменять. Вот конкретные инструкции, на которых я застрял:

Вы должны создать конструктор, который может принимать имя отдела в качестве аргумента, и, если оно равно нулю, он попросит ввести имя отдела с клавиатуры и сохранит его. Он также инициализирует счетчик, который отслеживает количество сотрудников в массиве и поддерживается при добавлении, удалении или очистке.

Единственный способ заставить его работать - это настроить конструктор на прием двух аргументов, одного для названия отдела и одного для счетчика. Но предоставленный файл main.cpp допускает только один аргумент name.

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 Ответ

3 голосов
/ 22 марта 2019

Есть ли способ использовать счетчик, инициализированный в конструкторе, вне конструктора без изменения требований к аргументам для 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
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...