C++ Can';找不到取消引用的指针。C++;
我创建了一个复制构造函数和复制操作符。在它们和“擦除(迭代器i)”之间,我已经设法取消了对指针的引用,但我找不到在哪里 平方列表擦除(迭代器i) 复印操作员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;
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;
}