[英]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函数一样工作,除了这个函数必须通过引用返回(根据赋值的要求)。
不幸的是,我对矢量和参考文献的理解不符合这个问题的优点,而且我没有任何教育资源可以帮助我解决这个问题。 如果有人能帮助我理解该怎么做,我将不胜感激。
我们很乐意提供任何额外的信息。
您需要指定返回类型。 而且,最好同时提供const
和non-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.