队列实施正在失去对头节点的跟踪

时间:2015-07-17 22:37:55

标签: c++ pointers

我已经实现了队列添加功能

void queue::add(myObj info)
{
    node* node = new node;

    node->info = &info; //<---suspect
    node->next = NULL;

    if(head == NULL){
        head = node;
    }
    else{
        tail->next = node;
    }
    tail = node;
    count++;

}

每次访问时,头节点的数据都指向我传入的任何内容。我意识到有一个模板,但我正在尝试构建一个模板,因为我显然需要练习。< / p>

我试图保持所有指针指向原始对象。我想传递对象并指向参考。

该节点是一个myObj * infonode * next

的结构

1 个答案:

答案 0 :(得分:1)

info是函数的一个参数,它是按值传递的。在这种情况下,&info是参数的地址,而不是原始数据的地址。

这是未定义的行为,只能给出奇怪的结果。

一种可能的解决方案是:

void queue::add(myObj& info)  // pass by reference
{
    ... // unchanged code
}

在这种情况下,&info将引用原始对象的地址。