링크 된 목록을 만들려고하고 있지만 노드를 두 번 삭제하기 때문에 문제가 발생합니다. 이 문제는 함수에 전달 된 노드가 함수로 전달 될 때 발생합니다 (함수가 참조로 전달 된 경우 모두 정상입니다). 그러면 함수에 전달되는 객체가 포인터가 노드를 가리키는 방식으로 복사되고 있다고 생각됩니다. 원래 목록에서 새 목록이 아닙니다. 나는이 문제를 해결하기 위해 = 연산자를 오버로딩하려했지만이 방법도 작동하지 않았다. 내가 잘못하고있는 것에 대한 설명은 훌륭 할 것이다. 도움을C++ 연결된 목록이 작동하지 않습니다.
감사
#include <iostream>
struct node{
node(int n){
if (n == 1){
data = 1;
next = NULL;
}
if (n == 2){
data = 2;
next = new node(1);
next -> next = NULL;
}
}
~node(){
std::cout << data << std::endl;
if (next != NULL) delete next;
}
void operator=(node a){
next = NULL;
}
int data;
node* next;
};
void func2(node v){
}
int main(){
node v(2);
if (v.next -> next == NULL) std::cout << "true\n";
func2(v);
return 0;
}
답변 해 주셔서 감사합니다. 내가 어떻게 고칠 것인가에 대해 설명하면 위대한 일이 될 것입니다. 나는 왜 내 오퍼레이터 = 과부하가 작동하지 않고 그 문제를 스스로 해결하는지에 대해서는 분명하지 않다. – fred