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 ++不要编译)

如果我在类中使用私有指针,那么如果我尝试连续两次添加相同的对象,那么最后一个对象添加了这项工作。但是如果我添加另一个对象然后添加相同的对象,则列表将添加该对象

一些想法?

另一个简短的问题: add 方法中的副本是否正确?或者这个副本可以做一个奇怪的内存崩溃?(我是 C++ 新手)

感谢大家的耐心等待:)

4

0 回答 0