我有以下几类:产品(抽象),服装(从产品继承),物品(具有来自产品的聚合对象)和购物车(具有来自物品(矢量项)的合成矢量)。
我的问题是:什么时候可以将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);
答案 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
的外观)。