Student型のオブジェクトを保持するノードを二重リンクリストに体系化しようとしています。手動でノードを作成してリストに追加すると、二重にリンクされたリストが正常に機能しますが、ループ内でノードをインスタンス化すると、ポインタがオーバーライドされます。C++でnewを使用してループ内で一意のオブジェクトポインタを作成
このコードのために、テキストファイルからの入力に応じて特定の数のノードをインスタンス化する必要があるため、ループを使用する必要があります。
DoublyLinkedList<Student> dlist;
for(int j = 0; j<numOfStudents;j++)
{
getline(myfile,line);
Student student1 = Student(toInt(line)); //toInt() converts string to Int
Node<Student> node1 = Node<Student> (student1);
dlist.add(&node1);
}
私が持っている問題は、テキストファイルに学生用の次のパラメータがある場合です。
そして二重リンクリストは、単に、パラメータとして '9' を有する同じ学生オブジェクトの3つの事例で満たされます。
問題を調べると、新しい演算子を使用すると、メモリリークを防ぐために後で削除する限り、各オブジェクトに一意のポインタが提供されることがわかりました。しかし、ノードの前に新しいを追加することによって、それを実装しようとする中で、私は
があるというエラー に「ノード*」からノー実行可能な変換を受けています「ノード」
私は非常に感謝問題の洞察や正しい方向へのプッシュ
'ノード *ノード1 =新しいノード(STUDENT1)。 dlist.add(node1); 'node1のタイプを変更してみてください。 –
lobo
あなたのコードは、そのループの中ではかなり「コッシャー」なものではありません。割り当てを持つ別のオブジェクトに割り当てられる一時的なオブジェクトを作成しています。これは、JavaやC#のように見えます(これはあなたの背景かもしれません)。コードをもっと表示すると、結果を説明するのに役立ちます。 – Cyb3rFly3r
問題の内容を推測するのではなく、私たちが実際にあなたを助けることができるように、[完全で、最小限で、検証可能な例](http://stackoverflow.com/help/mcve)を提供してください。私が提供したコードには動的割り当てはありません。 –