我是一名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函数一样,除了这个函数必须通过引用返回(根据赋值的要求。)
不幸的是,我对矢量和引用的理解不符合这个问题的优点,而且我没有任何可以帮助我的教育资源。如果有人能帮我理解该怎么做,我将不胜感激。
很乐意提供任何额外信息。
答案 0 :(得分:9)
您需要指定返回类型。此外,最好同时提供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
答案 1 :(得分:8)
您正在函数实现中返回void
。并且您也没有正确的声明来通过引用返回。
代码应该是这样的:
部首:
class Invoice
{
public:
vector<SalesItem> &getSalesItems();
private:
vector<SalesItem> salesItems;
};
实现:
vector<SalesItem> &Invoice::getSalesItems() {
return salesItems;
}