2013-12-14 107 views
1

我嘗試:如何通過引用將矢量分配給對象?

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

對不起,我的壞,向量應該改變通過對象當然。最後一個循環用於檢查。 – rsk82

+1

通過引用構造函數傳遞向量,但構造函數將傳遞的向量的內容複製到數據成員'myVector'。也就是說,'myClassInst.myVector'和'myVect'是無關的。 – dyp

回答

4

如果您想要在類中存儲對另一個對象的引用,則需要使用實際引用原始對象的內容。引用看起來像是明顯的選擇,但它們是不好的數據成員!相反,你想使用一個指針:

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