這是一個代碼段使用:分配值的指針在C++
void Move::AddToMovesList(Location* &list, int row, int col) {
// If the list is empty, create the first item
if (list == NULL)
list = new Location(row, col);
// List exists, so append
else
list->Add(row, col);
}
list
如果是NULL
,應創建一個新的Location
和指針list
應該指向新的位置。這是我期望的代碼行爲,但在gdb退出此功能之前,我注意到list
仍然是NULL
。我在這裏做錯了什麼?
我使用Location* &list
中的&符號來確保我可以永久(與本地)更改提供的指針。
我個人不會使用指針。您將空列表作爲空指針來表示。這意味着您需要添加代碼來明確檢查代碼中的任何位置。創建一個對象(最初代表空列表),然後添加成員到它沒有特殊情況下需要。 – 2010-10-01 18:11:16
你的代碼應該可以工作,你在調試時關閉了優化嗎? – 2010-10-01 18:15:25
我不確定我是否知道你在說什麼,文森特。我在默認設置下使用Eclipse內部的gdb。我在Windows上,並使用MinGW C++編譯器。 – Pieter 2010-10-01 18:27:11