以下是我作业的一小部分,在我为代码编写的测试中,我发现这是错误的。
我有一个模板化的数组类
在那个类中,我有一个名为get的函数,它返回对模板的引用,它的签名是:
template <class T>
T& Array<T>::get(int index)
显然,我希望能够从数组中获取一个值 - 我在函数中所做的每一个更改都会改变数组中的原始值。
我有以下电话:
Company Hiring=companies.get(companyID);
它确实返回具有相同数据的公司,但每当我更改它(比如说,添加一个工人,更改员工数量......)并返回时,数组中的公司不会更改并保持空白。
我做错了什么?你有什么想法吗?
如果您需要更多详细信息\代码请告诉我,我会编辑。
非常感谢。
答案 0 :(得分:3)
也许你的意思是:
Company& hiring = companies.get(companyID);
如果您没有捕获该变量中的引用,那么除非您直接操作它,否则您将制作一个永远不会更改的副本。
答案 1 :(得分:2)
您所做错的是您正在复制Company
返回的companies.get(companyID)
。如果您想更改公司的内容,则需要指定参考:
Company& Hiring = companies.get(companyID);
答案 2 :(得分:1)
Hiring
是数组元素的副本。修改不会更改数组中的副本。相反,您需要对数组元素的引用:
Company& Hiring=companies.get(companyID);
^