簡體   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