我已经实现了队列添加功能
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 * info
和node * next
答案 0 :(得分:1)
info
是函数的一个参数,它是按值传递的。在这种情况下,&info
是参数的地址,而不是原始数据的地址。
这是未定义的行为,只能给出奇怪的结果。
一种可能的解决方案是:
void queue::add(myObj& info) // pass by reference
{
... // unchanged code
}
在这种情况下,&info
将引用原始对象的地址。