如何通过引用将向量分配给对象?

时间:2013-12-14 22:48:47

标签: c++ oop pass-by-reference

我的尝试:

class myClass {
  std::vector<int> myVector;
 public:
  myClass(std::vector<int> &v) {
    this->myVector = v;
  }
  void doSomething() {
    for (int &num : this->myVector) {
      num += 100;
    }
  }
};

在main()中:

vector<int> myVect = {1,2,3,4};
myClass myClassInst(myVect);
myClassInst.doSomething();

然后检查:

for (int i : myVect) {
  printf("%i\n", i);
}

不对原始矢量进行更改。

1 个答案:

答案 0 :(得分:5)

如果要在类中存储对另一个对象的引用,则需要使用实际引用原始对象的内容。引用看起来是明显的选择,但它们是糟糕的数据成员!相反,您想要使用指针:

class myClass {
    std::vector<int>* myVector;
public:
    myClass(std::vector<int>& vector): myVector(&myVector) {}
    void doSomething() {
        for (auto& num: *myVector) {
            num += 100;
        }
    }
};