我声明了vector<test*> test1;
作为一个私有(private),我想为此创建 getter 和 setter。我试过了,
void setV(vector<test*> test1)
{
test1 = test1;
}
vector<test*> getV()
{
return test1;
}
它可以工作,但是工作起来很奇怪。还有其他方法吗?
谢谢
最佳答案
看setV
中的赋值语句:
test1 = test1;
私有(private)变量 test1
被同名的函数参数遮蔽,您正在将该参数分配给它自己。
你应该这样定义setV
:
void setV(vector<test*> const &newTest1) {
test1 = newTest1;
}
这样您实际上是将参数分配给私有(private)变量,并且对参数使用 const
引用可以避免不必要的临时复制。
此外,您应该将getV
定义为const
,并返回一个const
引用:
vector<test*> const &getV() const {
return test1;
}
这样就可以在您的类的 const
实例上调用它,并且可以避免为返回值制作不必要的拷贝。
(你也可以定义另一个 getV
,没有 const
,如果你想让调用者能够修改你类。)
关于c++ - 如何在 C++ 中为 vector 创建 getter 和 setter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7636015/