将另一个对象传递给对象向量

时间:2019-04-09 18:31:40

标签: c++ oop vector

我有以下几类:产品(抽象),服装(从产品继承),物品(具有来自产品的聚合对象)和购物车(具有来自物品(矢量项)的合成矢量)。

我的问题是:什么时候可以将Item以外的其他类的对象传递给vector?例如:items.push_back((Item(p, quantity))) 为什么这不会导致错误,因为这与vector的对象类型不同。

void addEvent(Product *p, int quantity) {
    items.push_back((Item(p, quantity)));
}

在main中创建的对象:

Clothing *obl4 = new Clothing(36, Gender::woman, "hose", 30);

然后添加到向量中:

Cart nakup;

nakup.addEvent(obl4, 2);

2 个答案:

答案 0 :(得分:0)

  

我何时可以将Item以外的其他类的对象传递给vector?例如:items.push_back(Item(p, quantity))为什么不会导致错误,因为这与向量的对象类型不同。

因此,看来您的Cart包含数据成员

std::vector<Item> items

在调用items.push_back(Item(p, quantity))时,您没有将不同的类传递给items,而是在构造Item(p, quantity)并将其插入items

答案 1 :(得分:0)

您有vector个对象中的一个Item个。 addEvent()正在将Item对象而不是vector本身推入Product*。因此,不会发生不匹配的情况(假设Item的构造函数使用Product*作为输入-您没有显示Item的外观)。