我希望pFirst始終指向地址中的同一個位置。然而pFirst,pCurrent即使函式只進入 Else 陳述句一次,它看起來也像移動了。
注意:代碼正在創建一個鏈表。
void Push(T data) {
_size;
Data d = Data(data);
if (_pCurrent != nullptr) _pCurrent->SetNext(&d);
else _pFirst = &d;
_pCurrent = &d;
}
uj5u.com熱心網友回復:
d是本地創建的,所以函式結束后就不存在了。除錯錯誤有點奇怪,因為程式在同一個地址初始化了一個新元素,所以我沒有立即明白到底發生了什么。
這是作業版本:
無效推(const T資料){
Data*d = new Data(data);
_size;
if (_pCurrent != nullptr)
_pCurrent->_pNext = d;
else
_pFirst = d;
_pCurrent = d;
}
uj5u.com熱心網友回復:
資料應該是一個靜態變數。代碼應該是這樣的:
Data d;
void UpdateData(Data newData) {
//Do something on d using newData;
}
void Push(T data) {
_size;
UpdateData(data);
if (_pCurrent != nullptr)
_pCurrent->_pNext = d;
else
_pFirst = d;
_pCurrent = d;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/360366.html
上一篇:洗掉雙指標
下一篇:試圖理解陣列C 的初始化
