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

rsk*_*k82 1 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;
    }
  }
};
Run Code Online (Sandbox Code Playgroud)

在main()中:

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

但随后检查:

for (int i : myVect) {
  printf("%i\n", i);
}
Run Code Online (Sandbox Code Playgroud)

不对原始矢量进行更改.

Die*_*ühl 5

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

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