【问题标题】:C++ returning a reference to a templateC++ 返回对模板的引用
【发布时间】:2014-04-23 15:34:45
【问题描述】:

以下是我在为代码编写的测试中发现的一小部分作业。

我有一个模板化的数组类
在那个类中,我有一个名为 get 的函数,它返回对模板的引用,它的签名是:

template <class T>
T& Array<T>::get(int index) 

显然,我希望能够从数组中获取一个值——而且我在函数中所做的每一次更改都会更改数组中的原始值。
我有以下电话:

Company Hiring=companies.get(companyID);

它确实返回了具有相同数据的公司,但是每当我更改它(比如说,添加一个工人,更改员工数量,......)并返回时,数组中的公司不会改变并保持空白。

我做错了什么?你有什么想法吗?

如果您需要更多详细信息\代码,请告诉我,我会编辑。

非常感谢。

【问题讨论】:

    标签: c++ reference pass-by-reference


    【解决方案1】:

    也许你的意思是:

    Company& hiring = companies.get(companyID);
    

    如果您没有在该变量中捕获引用,那么您正在制作一个永远不会更改的副本,除非您直接操作它。

    【讨论】:

    • 天啊。我是多么想念它。
    【解决方案2】:

    您做错的是您正在复制companies.get(companyID) 返回的Company。如果您想更改公司的内容,您需要指定参考:

    Company& Hiring = companies.get(companyID);
    

    【讨论】:

      【解决方案3】:

      Hiring 是数组元素的副本。修改它不会更改数组中的副本。相反,您需要对数组元素的引用:

      Company& Hiring=companies.get(companyID);
             ^
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-28
        • 1970-01-01
        • 2016-06-12
        • 2013-03-29
        • 2015-12-17
        • 2023-03-17
        • 2015-04-06
        • 2016-03-06
        相关资源
        最近更新 更多