[英]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實例的向量,則也可以定義另一個不帶const
的getV
。)
與先前的響應配合使用時,您還希望將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.