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