繁体   English   中英

c ++如何通过引用返回向量?

[英]c++ How to return a vector by reference?

我是一名c ++学生,可以帮助理解并完成我的任务。

我有一个SalesItem对象的向量:

class Invoice
{
public:
    //blabla
    vector<SalesItem> *getSalesItems(); //code provided by the assignment.
private:
{
    //blabla
    vector<SalesItem> salesItems;
};

我需要将该向量作为参考返回:

void Invoice::getSalesItems() //error on this line. Code provided by assignment.
{
    return salesItems; //error on this line.
}

现在,我知道给我错误的东西显然是错误的,我甚至没有任何指针或参考。 我发布这几行代码只是作为我希望看到的一个例子(或者更现实地说,对我有意义。)

我想要一个get函数,它像int或string这样的类型的其他get函数一样工作,除了这个函数必须通过引用返回(根据赋值的要求)。

不幸的是,我对矢量和参考文献的理解不符合这个问题的优点,而且我没有任何教育资源可以帮助我解决这个问题。 如果有人能帮助我理解该怎么做,我将不胜感激。

我们很乐意提供任何额外的信息。

您需要指定返回类型。 而且,最好同时提供constnon-const版本。 代码如下:

class Invoice
{
public:
          vector<SalesItem> &getSalesItems()       { return salesItems; }
    const vector<SalesItem> &getSalesItems() const { return salesItems; }
private:
    vector<SalesItem> salesItems;
};

样品用法:

Invoice invoice;
vector<SalesItem> &saleItems = invoice.getSalesItems(); // call the first (non-const) version
const Invoice &const_invoice = invoice;
const vector<SalesItem> &saleItems = const_invoice.getSalesItems(); // call the second (const) version

您在函数实现中返回void 并且您也没有正确的声明来通过引用返回。

代码应该是这样的:

标题:

class Invoice
{
public:
    vector<SalesItem> &getSalesItems();
private:
    vector<SalesItem> salesItems;
};

执行:

vector<SalesItem> &Invoice::getSalesItems() {
    return salesItems;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM