簡體   English   中英

c ++將對象傳遞給函數

[英]c++ passing objects to functions

我正在一個項目中處理集合的許多不同操作。 我有一個關於通過引用傳遞的具體問題。 在頭文件中,我創建了一個名為SoS的對象,該對象代表字符串集,其私有數據成員是字符串的向量m_vos和布爾值m_cofinite。 這是我對正在創建的交集函數感到困惑的示例。

SoS::makeIntersection(const SoS& B) const {

}

這是我正在創建的函數,它需要創建集合的交集。 我將通過遍歷並將這兩個集合放在一起,然后刪除兩個原始集合中不存在的元素來解決這個問題,從而使我成為兩者的交集。 我在邏輯上知道我該怎么做,但是我對傳遞到函數中的內容以及當僅傳入一組時如何使用兩個集合感到困惑(我被告知我無法更改函數的結構)功能,因此必須采用這種方式)。 任何幫助是極大的贊賞。

第一組是this ,您可以像this->m_vos...那樣訪問它的成員。 第二組是您傳入的組,您可以訪問其成員,例如B.m_vos...

但是,為簡便起見,除非局部變量和成員變量之間存在名稱沖突,否則可以省略this-> 因此,您可以簡單地執行m_vos...B.m_vos...

您還需要考慮函數將返回什么? 也許是您創建的路口? 那將是您可能返回的第三個SoS變量:

// return type SoS
SoS SoS::makeIntersection(const SoS& B) const {

    SoS intersection; // this is the new SoS that will be the intersection

    // fill intersection.m_vos using B.m_vos and this->m_vos

    return intersection; // return the intersection version
}

可以通過this訪問調用函數的對象。 第二個對象是函數的參數。

字符串的第一個向量是this->m_vos
字符串的第二個向量是B.m_vos

您的聲明:

有人告訴我我不能更改函數的結構,所以需要這樣

對我來說沒有意義。

該函數似乎沒有返回值。 您是否忘記將其包含在已發布的代碼中? 如何將所得對象(相交)返回給調用函數?

你不能”修改this是所得到的物體上,因為該函數是const成員函數。

您不能將B修改為結果對象,因為它是由const&傳遞的。

調用類的成員函數的方法是通過其對象(如果不是靜態的)。 要獲得兩個集合(sos對象)的交集,您將使用一個SoS對象調用該函數,然后將另一個作為參數引用傳遞。

在成員函數內部,可以使用this指針取消引用您曾經調用過的對象。 在這里這里閱讀更多。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM