Ich versuche, eine verknüpfte Liste zu erstellen, aber ich habe Probleme, weil ich meine Knoten zweimal lösche. Das Problem tritt nur dann auf, wenn ein Knoten in eine Funktion übergeben wird (wenn er als Referenz übergeben wird, ist alles in Ordnung), was zu der Annahme führt, dass das in die Funktion übergebene Objekt so kopiert wird, dass die Zeiger auf Knoten zeigen von der ursprünglichen Liste nicht die neue Liste. Ich habe versucht, dies zu umgehen, indem ich den = Operator überbelastete, aber das hat auch nicht funktioniert. Eine Erklärung dessen, was ich falsch mache, wäre großartig.C++ verknüpfte Liste funktioniert nicht
Danke für die Hilfe
#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;
}
Danke für die Antwort. Wenn du erklären könntest, wie ich das beheben würde, wäre das großartig. Mir ist nicht klar, warum mein Operator = Überladung nicht funktioniert und das Problem alleine löst. – fred