リンクリストを作成しようとしていますが、ノードを2回削除するため、問題が発生しています。この問題は、ノードが関数に渡されたときにのみ発生します(参照によって渡された場合はすべて正常です)。関数に渡されるオブジェクトが、ポインタがノードを指しているようにコピーされていると考えられます元のリストから新しいリストではない。私は=演算子をオーバーロードすることでこれを回避しようとしましたが、これはどちらもうまくいきませんでした。私が間違っていることの説明はすばらしいでしょう。助けのための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