C++ Can';找不到取消引用的指针。C++;

C++ Can';找不到取消引用的指针。C++;,c++,pointers,constructor,copy,dereference,C++,Pointers,Constructor,Copy,Dereference,我创建了一个复制构造函数和复制操作符。在它们和“擦除(迭代器i)”之间,我已经设法取消了对指针的引用,但我找不到在哪里 平方列表擦除(迭代器i) 复印操作员 square_list& operator = ( square_list & rhs) { clear(); for (auto it = rhs.begin(); it != rhs.end(); ++it) { insert( *it); } return *this;

我创建了一个复制构造函数和复制操作符。在它们和“擦除(迭代器i)”之间,我已经设法取消了对指针的引用,但我找不到在哪里

平方列表擦除(迭代器i)

复印操作员

square_list& operator = ( square_list & rhs) {
    clear();
    for (auto it = rhs.begin(); it != rhs.end(); ++it) {
        insert( *it);
    }

    return *this;
}
链表擦除(迭代器i)

模板
无效链接列表::擦除(迭代器i)
{
node_ptr_t tmpNode=i.getNode();
if(i.getNode()==\u头){
_head=i.getNode()->next;
}
if(i.getNode()==\u tail){
_tail=i.getNode()->prev;
}
if(i.getNode()->next)
i=迭代器(i.getNode()->next);
else if(i.getNode()->prev)
i=迭代器(i.getNode()->prev);
如果(tmpNode->prev)
tmpNode->prev->next=tmpNode->next;
其他的
tmpNode->prev=nullptr;
如果(tmpNode->next)
tmpNode->next->prev=tmpNode->prev;
其他的
tmpNode->prev=nullptr;
删除tmpNode;
--_大小;
}

我认为您不知道取消引用指针意味着什么。这本身不是问题;只有当该指针为空或无效时才有问题。很抱歉指定我取消引用了一个指针,但并不打算取消引用,因为当项目尝试取消引用该指针时,该指针将不可用。
square_list( square_list & slCopy) {
    _size = 0;
    for( auto it = slCopy.cbegin(); it != slCopy.cend(); ++it)
    {
        insert(*it);
    }
}
square_list& operator = ( square_list & rhs) {
    clear();
    for (auto it = rhs.begin(); it != rhs.end(); ++it) {
        insert( *it);
    }

    return *this;
}
template <class list>
void linked_list<list>::erase(iterator_t i)
{
node_ptr_t tmpNode = i.getNode();
if(i.getNode() == _head) {
    _head = i.getNode()->next;
}
if(i.getNode() == _tail) {
    _tail = i.getNode()->prev;
}

if( i.getNode()->next )
    i = iterator_t( i.getNode()->next );
else if( i.getNode()->prev)
    i = iterator_t( i.getNode()->prev );

if(tmpNode->prev)
    tmpNode->prev->next = tmpNode->next;
else
    tmpNode->prev = nullptr;
if(tmpNode->next)
    tmpNode->next->prev = tmpNode->prev;
else
    tmpNode->prev = nullptr;

delete tmpNode;
--_size;
}