mirror of https://github.com/xfarrow/lasd.git
Library 3
bug fix: when size==0 and a BinaryTree[Lnk/Vec] is casted to BinaryTree, and operator== is called, it crashed
This commit is contained in:
parent
f337ff7543
commit
828a41dd72
|
@ -61,9 +61,13 @@ const Data& BinaryTree<Data>::Node::Element() const{
|
|||
/* ----- end of struct Node ----- */
|
||||
|
||||
template <typename Data>
|
||||
bool BinaryTree<Data>::operator==(const BinaryTree& toCompare) const noexcept{
|
||||
if(size!=toCompare.size) return false;
|
||||
return(Root() == toCompare.Root());
|
||||
bool BinaryTree<Data>::operator==(const BinaryTree& tree) const noexcept{
|
||||
if(size == tree.size){
|
||||
if(size == 0) return true;
|
||||
else return (Root() == tree.Root());
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename Data>
|
||||
|
|
|
@ -140,14 +140,15 @@ BinaryTreeLnk<Data>& BinaryTreeLnk<Data>::operator=(BinaryTreeLnk<Data>&& tree)
|
|||
return *this;
|
||||
}
|
||||
|
||||
/*
|
||||
** operator== and operator!= can be removed from BinaryTreeLnk since they are
|
||||
** inherited from BinaryTree. They're here just for clarity and because they're
|
||||
** in the template.
|
||||
** Maybe you can make them more optimized here.
|
||||
*/
|
||||
template <typename Data>
|
||||
bool BinaryTreeLnk<Data>::operator==(const BinaryTreeLnk<Data>& tree) const noexcept{
|
||||
if(size == tree.size){
|
||||
if(size == 0) return true;
|
||||
else return (Root() == tree.Root());
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
return (BinaryTree<Data>::operator==(tree));
|
||||
}
|
||||
|
||||
template <typename Data>
|
||||
|
|
Loading…
Reference in New Issue