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

C++ 使用聚合创建和关联两个不同的对象成员,c++,C++,我的程序的目标是能够让用户创建多达100个人和汽车对象。然后,我希望用户能够“注册”一辆车给一个特定的人。通过研究,我发现聚合是一条可行的途径。不过,我真的不知道如何实现这一点 现在我只有两个类,我将汽车对象的向量与person类相关联: class person{ public: vector<string>cars = new vector<string>(); }; class car{ //something }; 班级人员{ 公众: vectorc

我的程序的目标是能够让用户创建多达100个人和汽车对象。然后,我希望用户能够“注册”一辆车给一个特定的人。通过研究,我发现聚合是一条可行的途径。不过,我真的不知道如何实现这一点

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

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

};

class car{

//something

};
班级人员{
公众:
vectorcars=新向量();
};
班车{
//某物
};

你如何将这两者联系起来?非常感谢您的建议。

目前,您有1人“拥有”一系列(矢量)汽车。你想要的是一辆车归一个人所有

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

我不会让
知道
汽车
,反之亦然。相反,我认为一些外部实体应该将它们联系起来。换句话说

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

class car
{
    // something
    std::string vin;
};
您可以使用以下类来聚合这两个

class driver
{
    // something
    car m_car;
    person m_owner;
}
然后,您可以对100名驾驶员进行以下
向量
,每个驾驶员都有一辆相关的
汽车

std::vector<driver> owners = std::vector<driver>(100);
std::vector owner=std::vector(100);
如果需要的话,您还可以迭代它们来执行一些操作

for (auto& owner : owners)
{
    std::cout << "Current owner: " << owner.m_person.name << "\n"
              << "Associated vehicle: " << owner.m_car.vin << "\n"
}
用于(自动和所有者:所有者)
{

std::非常感谢您的帮助!让用户将两者关联起来的最佳方式是什么?显然我正在运行一个函数,但该函数如何将用户输入的汽车和人关联起来?您可以使用唯一的
汽车
。在上面的示例中,这可能是
人.name
or
car.vin
。如果您有其中一个的集合,您可以搜索每个人的姓名,直到找到用户输入的姓名,然后创建一个新的
driver
,将其与汽车关联。在这种情况下,
driver
也可以只具有指针或引用,而不具有对象本身的副本。