在运行时创建具有不同名称的对象?

时间:2015-11-17 02:56:18

标签: c++

我有一个名为大学的课程。我希望创建类Department的对象,类University有一个Department类型的向量。我的程序是读取一个文件,并根据给出的命令调用不同的函数。我的程序是创建类Department的多个对象,并将它们放入大学类中名为Departments的向量中。

我不明白如何使用不同的名称创建多个Department类型的对象。

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

___是占位符,表示正在创建的Department对象的名称。我如何制作它,以便每次创建时都有不同的名称?谢谢。

2 个答案:

答案 0 :(得分:1)

您正在混合变量名称与数据(这些变量中包含的内容)。

变量名称并不代表任何东西,它只是用于引用代码中某处的特定占位符,而数据是您通常修改的内容。

所以:

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

非常好。 department只是在函数内创建的部门的本地名称。 depName是另一个变量,它将包含真实姓名,即std::string(例如"Nice Department"),它是真实数据。

答案 1 :(得分: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的成员,等等。