2015-11-17 4 views
-3

У меня есть класс под названием Университет. Я хочу создать объекты класса Department, а у класса University есть вектор типа Department. Моя программа предназначена для чтения файла и на основе приведенной команды вызывает различные функции. Моя программа состоит в том, чтобы сделать несколько объектов класса Department и поместить их в вектор под названием Departments в классе университета.Создание объектов с разными именами во время выполнения?

Я не понимаю, как создавать несколько объектов типа Департамент с разными именами.

bool University::CreateNewDepartment(string depName, string depLoc, long depChairId) 
{ 
if (depChairId == 0) 
//Department ___(depName, depLoc, depChairId); 
//Departments.pushback(___) 
return true; 
} 

___ является заполнителем для названия создаваемых объектов Департамента. Как это сделать, чтобы каждый раз, когда он был создан, есть другое имя? Спасибо.

+0

Что делать вы что происходит с вашей автоматической переменной, когда вы покидаете ее область? – Deduplicator

+0

Вы имеете в виду depChairId? Тогда он не будет создавать объект вообще? –

+0

Чтобы уточнить, какой вред был бы иметь одноименное имя, в соответствии с вашим нынешним пониманием? –

ответ

1

Вы смешиваете имена переменных с данными (это то, что содержится в таких переменных).

Имя переменной - это что-то, что ничего не значит, оно просто используется для обозначения конкретного заполнителя где-то в вашем коде, тогда как данные - это то, что вы обычно изменяете.

Итак:

Department department = Department(depName, location, chairID); 
departments.push_back(department); 

это прекрасно. department - это просто локальное имя для отдела, который создается внутри функции. depName - это другая переменная, которая будет содержать реальное имя, которое является std::string (например, "Nice Department"), и это реальные данные.

+0

Предположим, я создал второй объект с названием отдела. Это не перезаписывает предыдущий объект? И как мне изменить значения объекта позже, например, например, 'department.location', если они имеют одно и то же имя? –

+0

@JoshuaManero Я честно понятия не имею, как прояснить все ваши недоразумения с чем-то подходящим в ответе ... пожалуйста, продолжайте читать свою книгу (или то, что вы используете, чтобы учиться). Разница между значением и именем одной (одной) переменной (ей) с ней, какой объем означает, что такое карта ... – deviantfan

+0

@deviantfan Я пришел сюда в крайнем случае, просмотрев свой учебник и через лекции.Я смущен тем, как я могу создавать несколько объектов с тем же именем, а затем модифицировать их позже. Возможно, создавая объект, помещая его в вектор, а затем ссылаясь на него пятном в векторе? 'department [0]' для ex? –

0

Определить Department что-то вроде этого:

class Department 
{ 
public: 
    Department(const std::string& name, const std::string& location, long chairId) 
     : name_(name) 
     , location_(location) 
     , chairId_(chairId) 
    { 
    } 

    // probably want accessors to get the variables ... 

private: 
    std::string name_; 
    std::string location_; 
    long chairId_; 
}; 

Затем в University::CreateNewDepartment сделать

departments.push_back(Department(depName, depLoc, depChairId)); 

University Ваш класс должен был бы иметь std::vector<Department> элемент с именем departments и т.д.

Смежные вопросы