c++ - 如何通过引用将 vector 分配给对象?

标签 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);
}

不对原始 vector 进行任何更改。

最佳答案

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

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

关于c++ - 如何通过引用将 vector 分配给对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20589148/

相关文章:

c++ - 在 C++ 中通过引用传递对象

c++ - std::atomic_...<std::shared_ptr> 应该如何用于线程安全类的复制和移动操作?

c++ - C++ 中的包装器与适配器

Matlab复制构造函数

java - 每次循环迭代时更改分配的变量

java - 为什么 Java 中不能通过引用调整数组大小?

c++ - 如何通过多态引用传递unique_ptr?

c++ - linux c++ netbeans 7.4 opengl 问题

c++ - 循环依赖难题

oop - 在 VBA 中实现我自己的接口(interface) - 错误 : Object module needs to implement 'x' for interface 'y'