使用聚合来创建和关联两个不同的对象成员

时间:2017-04-25 15:53:38

标签: c++

我的程序的目标是让用户每人最多可以创建100个人和汽车对象。然后我希望用户能够将汽车“注册”给特定的人。做研究,我发现聚合将成为可行的途径。不过,我真的迷失了如何实现这个目标。

现在我只有两个类,我将汽车对象的矢量与人类相关联:

class person{
public:
  vector<string>cars = new vector<string>();

};

class car{

//something

};

你怎么把这两个联系起来?任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:0)

目前,您有1个人拥有&#39;汽车的集合(矢量)。你想要的是一辆车由一个人拥有。

class car 
{
    person& _person;
    public void Register(Person& person) { _person = person; }
}

答案 1 :(得分:0)

我不会person知道car,反之亦然。相反,我认为一些外部实体应该与它们相关联换句话说

class person
{
    // something
    std::string name;
};

class car
{
    // something
    std::string vin;
};

您可以使用以下类来聚合这两个

class driver
{
    // something
    car m_car;
    person m_owner;
}

然后,您可以制作以下vector个100个驱动程序,每个驱动程序都有关联的carperson

std::vector<driver> owners = std::vector<driver>(100);

如果需要,您也可以迭代它们以执行某些操作

for (auto& owner : owners)
{
    std::cout << "Current owner: " << owner.m_person.name << "\n"
              << "Associated vehicle: " << owner.m_car.vin << "\n"
}