0

簡単なテンプレート リンク リストを作成しました。オブジェクトを追加する方法は次のとおりです。

void add(T *obj) {
    Node *n = new Node;
    T *copy = new T(*obj);
    n->info = copy;
    [...]

私のノードは構造体です:

struct Node {
    T* data;
    Node *next;
    Node *prev;
};
Node *head;

オブジェクトが既に追加されているかどうかを確認するメソッドを実行するにはどうすればよいですか? (重複させたくないので)

これはテンプレートなので、ノードが既にオブジェクトを指している場合の制御であると私が考えた唯一の解決策です(addメソッドで渡されたメモリアドレスを表示し、それをノードに検索します)..しかし、addメソッドは、のコピーを行いますオブジェクトを新しいノードに挿入するため、このソリューションは機能しません

addメソッドで新しいオブジェクトを追加するたびに、Tポインタのリストを使用してオブジェクトのアドレスを挿入することを考えましたが、標準のリストを使用できず(これは宿題であるため)、クラスを使用できませんまだ定義されていないため.. (g++ はコンパイルしない)

クラスでプライベート ポインターを使用する場合、同じオブジェクトを 2 回続けて追加しようとすると、最後に追加されたオブジェクトがこの作業を行います。しかし、別のオブジェクトを追加してから同じオブジェクトを追加すると、リストにオブジェクトが追加されます。

いくつかのアイデア?

別の短い質問: add メソッドのコピーは正しいですか? または、このコピーは奇妙なメモリ クラッシュを起こすことができますか? (私はC ++が初めてです)

お待ちいただきありがとうございます:)

4

0 に答える 0