簡體   English   中英

如何在C ++中為矢量創建getter和setter?

[英]How can I create getter and setter for vector in C++?

我聲明了vector<test*> test1; 作為私有,我想為此創建getter和setter。 我試過了,

void setV(vector<test*> test1)
{
    test1 = test1;
}

vector<test*> getV()
{
    return test1;
}

它可以工作,但是很奇怪。 還有另一種方法嗎?

謝謝

查看setV中的賦值語句:

test1 = test1;

私有變量test1被同名的function參數遮蓋,並且您正在為其分配參數。

您應該這樣定義setV

void setV(vector<test*> const &newTest1) {
  test1 = newTest1;
}

這樣,您實際上就是將參數分配給私有變量,並且對參數使用const引用可以避免不必要的臨時復制。


另外,您應該將getV定義為const ,並返回const引用:

vector<test*> const &getV() const {
  return test1;
}

這樣,可以在您的類的const實例上調用它,並且避免為返回值創建不必要的副本。

(如果希望調用者能夠修改類的非const實例的向量,則也可以定義另一個不帶constgetV 。)

與先前的響應配合使用時,您還希望將getter轉換為引用傳遞(因為傳遞副本的速度可能較慢):

const vector<test *> &getV(){return test1;} //This will provide a read-only reference to your vector.

暫無
暫無

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

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