c++ - 变化没有反映在参考文献中
问题描述
我正在做一项任务,我们应该编写一个非常基本的公司场景来管理他们的产品。因此,当输入新产品时,我们应该检查它是否已经存在(我们应该通过将产品名称与输入的产品名称进行比较来做到这一点;空产品的名称为空字符串),如果我们没有找到它,那么我们应该将它添加到公司的产品列表中(最多只能有 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
对象,以便我可以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&)
调用调用该函数search("", p);
,其中我传递一个空字符串以检查当前为空的产品,并且 p 被声明为Product p;
.
我声明了另一个Product
object Product temp = input();
,input
声明为where Product input();
,它向用户询问有关产品的信息并返回一个Product
对象。我已经为Product
类重载了赋值运算符。
然后我写
p = temp;
现在我在想,sincereturn_product_1
会返回一个引用,p
并被赋值为return_product_1
,因此p
and product1
应该是同义词(假设search
函数最初发现product1
确实有一个空字符串作为名称)。对 所做的任何更改p
都应反映在 中product1
,但似乎并非如此。我希望 的详细信息temp
也应该分配给,product1
因为我分配temp
给p
. 我的代码或者我的逻辑有问题吗?任何帮助表示赞赏。谢谢你。
解决方案
推荐阅读
- java - JPA findAll Pageable Request Total Count Group By Column
- python - 我如何根据另一个列表重新排列python中的列表
- python - 我写了一个 python 代码,它不能很好地用于随机文本搜索
- batch-file - 为什么 cmd 输出不重定向到批处理文件中的 nul?
- math - 函数逼近错误(OverflowError: int too large to convert to float)
- spring - 在我的 springboot 组件中包含一个库服务或 API
- azure-devops - 如何将 Azure DevOps Board 和 Repos 隐藏到特定组?
- java - 使用 javacardx.security.derivation 的 Javacard 密钥派生 (hmac)
- laravel - Laravel 模型记录检索
- python-3.x - 这不应该超出范围吗?