我有一個名爲VEC的自定義矢量類和一個名爲Data的類,該類包含稱爲v的VEC的std :: vector。VEC充當一個非常簡單的矢量,它只存儲4個值。函數退出後矢量數據消失
vector<VEC> v;
在其他地方,我有兩個功能;過程和創造。我的process()應該接受一個Data對象作爲參數,然後改變它的內容。它被聲明爲
void myClass::process(Data data);
在這個函數中,我創建了血管內皮細胞的臨時載體,然後把它的內容爲數據的五:
VEC v1(1, 1, 1, 1);
VEC v2(2, 2, 2, 2);
VEC v3(3, 3, 3, 3);
vector<VEC> temp;
temp.push_back(v1);
temp.push_back(v2);
temp.push_back(v3);
for (int i = 0; i < 3; i++)
{
data.v.push_back(vtemp[i]);
}
cout << data.v.size() << endl;
正如你所期望的,這個打印出3
現在,這裏是問題發生的地方。另一個函數create()在矢量數據列表中的每個Data對象上調用process()。出於測試目的,這個只使用第一個元素。
void myClass::create() {
process(dataList[0]);
cout << dataList[0].v.size() << endl;
}
這是它打印出
3
0
正如你所看到的,它正常工作的過程中()函數,但V向量似乎儘快清空本身作爲函數退出。這是一個問題,因爲我需要每個Data對象在process()被調用後保存它的新v內容。這裏發生了什麼?
您似乎正在操作'Data'的副本。如果您打算修改它,請參考參考。 – krzaq