Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;链表覆盖以前的数据_C++_Pointers_Linked List - Fatal编程技术网

C++ C++;链表覆盖以前的数据

C++ C++;链表覆盖以前的数据,c++,pointers,linked-list,C++,Pointers,Linked List,所以我在做一个项目,我不知道我的问题是什么。我不熟悉使用和学习指针,所以这可能是我没有看到的东西,但是当我运行print方法时,它会显示列表中的每一项,其值与最后一项相同。我不明白为什么它不仅会添加到列表中,还会覆盖以前的条目。(我还没有完成剩下的函数,所以我没有包括它们,main下的所有内容都是作为模板提供的。我只是试图克服这个障碍,因为我似乎无法在网上找到答案。) #include在主功能中只有一个名为Bid的Bid对象。每次将&bid传递到Append函数时,您都在传递同一对象的地址。因此

所以我在做一个项目,我不知道我的问题是什么。我不熟悉使用和学习指针,所以这可能是我没有看到的东西,但是当我运行print方法时,它会显示列表中的每一项,其值与最后一项相同。我不明白为什么它不仅会添加到列表中,还会覆盖以前的条目。(我还没有完成剩下的函数,所以我没有包括它们,main下的所有内容都是作为模板提供的。我只是试图克服这个障碍,因为我似乎无法在网上找到答案。)


#include

主功能中只有一个名为
Bid
Bid
对象。每次将
&bid
传递到
Append
函数时,您都在传递同一对象的地址。因此,您的链表包含一组指针,它们都指向同一内存

一种解决方法是在
Append
中分配新内存,如下所示:

void LinkedList::Append(Bid* bid_arg) {
  Bid *bid = new Bid{*bid_arg};   // allocate memory with the value 
                                  // pointed at by the pointer that is passed in
  // append bid to the linked list
}

非常感谢你,这个解释太完美了。我知道我忽略了一些简单的事情,你是个救命恩人!
void LinkedList::Append(Bid* bid_arg) {
  Bid *bid = new Bid{*bid_arg};   // allocate memory with the value 
                                  // pointed at by the pointer that is passed in
  // append bid to the linked list
}