我宣称vector<test*> test1;是私人的,我想为此创建getter和setter.我试过了,
void setV(vector<test*> test1)
{
test1 = test1;
}
vector<test*> getV()
{
return test1;
}
Run Code Online (Sandbox Code Playgroud)
它有效,但它的工作非常奇怪.还有另一种方法吗?
谢谢
查看赋值语句setV:
test1 = test1;
Run Code Online (Sandbox Code Playgroud)
私有变量test1被同名的函数参数遮蔽,并且您将该参数分配给自身.
你应该这样定义setV:
void setV(vector<test*> const &newTest1) {
test1 = newTest1;
}
Run Code Online (Sandbox Code Playgroud)
这样您就可以将参数分配给私有变量,并且使用const参数的引用可以避免不必要的临时副本.
此外,您应该定义getV为const,并返回一个const引用:
vector<test*> const &getV() const {
return test1;
}
Run Code Online (Sandbox Code Playgroud)
这样就可以在const类的实例上调用它,并避免为返回值制作不必要的副本.
(如果希望调用者能够修改类的非const实例的向量,也可以定义另一个getV,不带consts.)