template <typename Type>
bool Lazy_deletion_node<Type>::insert( Type const &obj ) {
if(this == nullptr){
Lazy_deletion_node<Type> *tmp = new Lazy_deletion_node( obj );
this = tmp;
return true;
}
else if(obj == this->retrieve()){
if(erased){
erased = false;
return true;
}
else{
return false;
}
}
else if(obj < this->retrieve()){
left()->insert( obj );
}
else if(obj > this->retrieve()){
right()->insert( obj );
}
}
嘿伙计们,我正在尝试为延迟删除树进行插入,它基本上是一个二叉搜索树,除了我将节点标记为“已删除”而不是实际从树中删除它们。这是一种将新节点插入到包含对象 obj 的树中的方法。nullptr 定义为 0。
我首先测试一下指针是否指向 0。如果是,我创建一个在内部存储 obj 的节点,然后尝试使指针指向这个新创建的节点。
但是,当我尝试编译时,它给了我一个错误,即在读取 this = tmp; 的行上需要左值作为赋值的左操作数。谁能告诉我为什么会这样?
提前致谢。