0
我確信之前已經詢問過這個問題,但所有的搜索結果都有const&
問題。在參數傳遞參數時保持const正確性問題
我希望確保下面的方法不會改變傳遞給它的GuestNode
,所以我想通過const GuestNode& guest
,但G ++不會讓這種情況發生,因爲我分配&guest
的指針。爲什麼會發生?我怎樣才能確保通過的參數保持原樣?
void GuestList::Add(GuestNode& guest)
{
if (first == 0)
{
//first guest
first = &guest;
}
else
{
//nth guest
GuestNode *p = first;
while (p->next != 0)
p = p->next;
p->next = &guest;
}
SetCount(GetCount() + 1);
}
我明白了。但是,如果我先創建const,那麼當我需要擦除列表中的第一個元素並相應地調整第一個指針時,我該做什麼? – Innkeeper 2013-03-23 00:37:38
@Innkeeper您仍然可以修改*指針*。它只是它指向的對象,就是'const'。 – 2013-03-23 00:39:31
好的,但在這個例子中,如果我把'first'改成'const',我還需要用'p'來完成,然後'p-> next =&guest'部分不會編譯。 – Innkeeper 2013-03-23 00:46:23