我开发了一个简单的模板链表..我添加对象的方法是:
void add(T *obj) {
Node *n = new Node;
T *copy = new T(*obj);
n->info = copy;
[...]
我的Node是一个结构:
struct Node {
T* data;
Node *next;
Node *prev;
};
Node *head;
如何查看某个对象是否已添加? (因为我不想重复)
这是一个模板,所以我认为它是唯一的解决方案,如果一个节点已经指向了对象(查看在add方法中传递的内存地址并将其搜索到一个节点中),那么这就是add方法,做一个对象的副本并将其插入新节点,因此此解决方案无法正常工作
我认为每次在add方法中添加新对象时都会使用T指针列表并插入对象的地址但是我不能使用标准列表(因为这是一个功课)而我不能使用我的类,因为它尚未定义..(g ++不编译)
如果我在类中使用私有指针,那么如果我尝试连续两次添加相同的对象,那么最后一个对象添加了这个工作..但如果我添加另一个对象然后添加相同的对象,列表将添加对象
一些想法?
另一个简短的问题: 是否正确添加方法中的副本?或者这个副本可以做一个奇怪的内存崩溃? (我是C ++的新手)
感谢所有人的耐心:)