我的尝试:
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);
}
不对原始矢量进行更改。
答案 0 :(得分:5)
如果要在类中存储对另一个对象的引用,则需要使用实际引用原始对象的内容。引用看起来是明显的选择,但它们是糟糕的数据成员!相反,您想要使用指针:
class myClass {
std::vector<int>* myVector;
public:
myClass(std::vector<int>& vector): myVector(&myVector) {}
void doSomething() {
for (auto& num: *myVector) {
num += 100;
}
}
};