2013-07-19 41 views
0

我想寫一段代碼,我通過引用通過引用傳遞類的構造函數並更新類的成員函數中的向量。但是,當我回到主要功能,沒有更新發生在矢量:通過在構造函數中傳遞更新向量

//頭文件

class A{ 
private: 
     std::vector<T> &x; 
public: 
     A(std::vector<T>& x_):x(x_) {} 
     int func(); 
}; 

// cpp文件

int A::func() { 
    // process done 
    T temp; 
    x.push_back(temp); 
} 

//主要功能

int main() { 
    std::vector<T> vec; 
    A a(vec); 
    a.func(); 
} 

我試過改變向量是類中的指針而不是引用,但向量不會更新後該函數運行。有關如何更改程序的建議?

+0

您是否收到任何編譯器錯誤?另外,你可以發佈構造函數代碼嗎? – taylorc93

+0

函數運行後,我得到沒有錯誤,但矢量的大小爲0。我根本沒有構造函數。 – shunyo

+0

「,但在函數運行後向量不會更新」你怎麼知道的?調試器是否這樣說?還是你寫了一些代碼來檢查? – dyp

回答

0
#include <iostream> 
#include <vector> 
using namespace std; 

class A 
{ 
    std::vector<int> &x; 
public: 
    A(std::vector<int>& x_):x(x_) {} 
    int func(); 
}; 

int A::func(){ 
    int temp=0; 
    x.push_back(temp); 
    return 0; 
} 

int main(){ 
    std::vector<int> vec; 
    A a(vec); 
    a.func(); 
    return 0; 
} 

一切都很好vec改變了。我認爲你有另一個問題或錯誤,你甚至不知道。

+0

它的工作。調試器沒有正確更新。感謝您檢查。 – shunyo

相關問題