我有以下問題:如何標準::矢量對象複製到其內部存儲
void add(){
cRow Row();
Row.add("Column", "Value");
std::vector<cRow> mRows;
mRows.push_back(Row);
}
cRow::cRow(): mCol(NULL), mVal(NULL) {
}
cRow::add(const char* Col, const char* Val){
mCol = strdup(Col);
mVal = strdup(Val);
}
cRow::~cRow(){
free(mCol);
free(mVal);
}
加上局部變量行向量後,調用析構函數爲該行和琴絃被釋放。
顯然,向量中存儲行的字符串指針現在也被釋放。離開本地作用域後對行的任何訪問都將導致段錯誤。
行的轉儲照顧2個呼叫這樣的:
| (null) | (null) |
-----------------------------------------------------
| (null)| (null) |
| LastContainerUpdatePropagation| 1307967498 |
------------------------ END ------------------------
後3個電話:
| (null) | (null) |
-----------------------------------------------------
| (null)| (null) |
| (null)| (null) |
| LastSystemUpdatePropagation| 1307967498 |
------------------------ END ------------------------
完全離開範圍而無需添加新行之後,每一行被釋放。
所以,現在我的問題:std:vector複製對象如何?我需要做些什麼來保持指向字符串的指針或將它們複製到另一個空間中?
非常感謝!
'cRow Row()'沒有聲明變量,它聲明瞭一個函數。你發佈的代碼不是真實的,它甚至不會編譯。請發佈真實的代碼。 – AnT 2011-06-14 20:01:08
兩個字:[規則三](http://en.wikipedia.org/wiki/Rule_of_three_(C%2B%2B_programming)) – 2011-06-14 20:20:16
這是三個字:) – bdonlan 2011-06-14 22:56:34