Cra*_*ane 2 c++ pointers reference vector header-files
我是一名c ++学生,可以帮助理解并完成我的任务.
我有一个SalesItem对象矢量:
class Invoice
{
public:
//blabla
vector<SalesItem> *getSalesItems(); //code provided by the assignment.
private:
{
//blabla
vector<SalesItem> salesItems;
};
Run Code Online (Sandbox Code Playgroud)
我需要将该向量作为参考返回:
void Invoice::getSalesItems() //error on this line. Code provided by assignment.
{
return salesItems; //error on this line.
}
Run Code Online (Sandbox Code Playgroud)
现在,我知道给我错误的东西显然是错误的,我甚至没有任何指针或参考.我发布这几行代码只是作为我希望看到的一个例子(或者更现实地说,对我来说是有道理的.)
我想要一个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;
};
Run Code Online (Sandbox Code Playgroud)
样品用法:
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
Run Code Online (Sandbox Code Playgroud)
您正在void函数实现中返回.并且您也没有正确的声明来通过引用返回.
代码应该是这样的:
标题:
class Invoice
{
public:
vector<SalesItem> &getSalesItems();
private:
vector<SalesItem> salesItems;
};
Run Code Online (Sandbox Code Playgroud)
执行:
vector<SalesItem> &Invoice::getSalesItems() {
return salesItems;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3770 次 |
| 最近记录: |