C++ 使用聚合创建和关联两个不同的对象成员
我的程序的目标是能够让用户创建多达100个人和汽车对象。然后,我希望用户能够“注册”一辆车给一个特定的人。通过研究,我发现聚合是一条可行的途径。不过,我真的不知道如何实现这一点 现在我只有两个类,我将汽车对象的向量与person类相关联:C++ 使用聚合创建和关联两个不同的对象成员,c++,C++,我的程序的目标是能够让用户创建多达100个人和汽车对象。然后,我希望用户能够“注册”一辆车给一个特定的人。通过研究,我发现聚合是一条可行的途径。不过,我真的不知道如何实现这一点 现在我只有两个类,我将汽车对象的向量与person类相关联: class person{ public: vector<string>cars = new vector<string>(); }; class car{ //something }; 班级人员{ 公众: vectorc
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
orcar.vin
。如果您有其中一个的集合,您可以搜索每个人的姓名,直到找到用户输入的姓名,然后创建一个新的driver
,将其与汽车关联。在这种情况下,driver
也可以只具有指针或引用,而不具有对象本身的副本。