【问题标题】:how to assign vector to object by reference?如何通过引用将向量分配给对象?
【发布时间】:2013-12-14 22:48:46
【问题描述】:

我的尝试:

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当然应该通过object来改变。最后一个循环用于检查。
  • 您通过引用将向量传递给构造函数,但构造函数将传递的向量的内容复制到数据成员myVector。也就是说,myClassInst.myVectormyVect 是不相关的。

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多