我开发了一个简单的模板链表。我添加对象的方法是这样的:
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++ 新手)
感谢大家的耐心等待:)