问题描述
我正在做一个作业,在该作业中,我们应该编写公司的一个非常基本的方案来管理其产品。因此,当输入新产品时,我们应该检查它是否已经存在(我们应该通过将产品名称与输入的产品名称进行比较来做到这一点;空产品的名称为空字符串),如果我们找不到它,那么我们应该将其添加到公司的产品列表中(最多只能有3种产品,因此我要逐一检查每个产品)。
class Store : public Product {
public:
...
Product& return_product_1() {return product1;}
Product& return_product_2() {return product2;}
Product& return_product_3() {return product3;}
private:
Product product1;
Product product2;
Product product3;
...
};
因此,我认为我可以使用一个函数来返回对当前为空的对象的引用(由于所有三个Product对象都是单独存储在类中的,因此添加或删除对象只是从以下位置询问其详细信息)用户或将数据成员分别设置为NULL),因此我创建了以下函数来查找特定的Product
对象。我传递了一个字符串n
,以检查是否有任何Product
对象与n
具有相同的名称,并且我还传递了一个空的Product
对象,以便我可以制作{{1} }与返回的p
同义,因为它们都是引用。 (之所以这样做,是因为我想同时返回正确的Product
对象和布尔值。我本可以使用Product
来返回它们两个,但我不想这样做。>
std::pair
bool StarberksInterface::search(string n,Product& p) {
if(store.return_product_1().product_name() == n) {
p = store.return_product_1();
return true;
}
else if(store.return_product_2().product_name() == n){
p = store.return_product_2();
return true;
}
else if(store.return_product_3().product_name() == n) {
p = store.return_product_3();
return true;
}
else return false; // The function returns true when a Product object which the same name as the first parameter is found
}
定义为
product_name
其中std::string product_name() const {return name;}
是name
类的类型std::string
的数据成员。
使用函数调用Product
调用函数search(string,Product&)
,其中我传递一个空字符串以检查当前为空的产品,并且p声明为search("",p);
。
我声明了另一个Product p;
对象Product
,其中Product temp = input();
声明为input
,它询问用户有关产品的信息并返回{{1} }对象。我已经重载了Product input();
类的赋值运算符。
然后我写
Product
现在我在想的是,由于Product
将返回一个引用,并且p = temp;
被分配了return_product_1
的值,因此p
和return_product_1
应该是同义词(假设p
函数最初发现product1
确实具有一个空字符串作为名称)。对search
所做的任何更改都应反映在product1
中,但事实并非如此。我希望将p
的详细信息也分配给product1
,因为我将temp
分配给了product1
。我的代码或逻辑有问题吗?
任何帮助表示赞赏。谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)