c++ - 如何在 C++ 中为 vector 创建 getter 和 setter?

标签 c++ visual-c++

我声明了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/

相关文章:

c++ - 从 char* 获取 istream

c++ - 从 C++ MD2 Loader 到 C\Objective-C & Cocoa

c++ - MSVC 函数名修饰

c++ - 如何在 C++ 中进行内联汇编 (Visual Studio 2010)

c++ - 显式移动构造函数

c++ - 停止在线程中运行的类方法

python - TensorFlow,为什么选择 python 语言?

c++ - 为什么使用 ostream 的字符串会导致 stackoverflow?

c++ - 更好地理解 extern "C"函数

c++ - Visual C++ 4.0 的正则表达式