0

I implemented singly linked list using binary-tree concept to insert elements in the list (tree). When I copy the values of a list using assignment like that

Tree<A> list1, list2;

//Filling list1...

list2 = list1;

//Remove all elements of list1 using the implemented remove method...

print(list2); //throws an error as its elements appear to have been removed as well

It seems to also copy the pointers of class members (m_pLeft and m_pRight) of the tree. Does anyone know why ? and how can I avoid it?

template<typename T>
class Tree {

    class ListElem {
    public:

        ListElem(T t) : m_Elem(t) {}
        ListElem(const ListElem&) = delete;
        ListElem& operator=(const ListElem&) = delete;

        T m_Elem;
        ListElem* m_pLeft = nullptr, * m_pRight = nullptr;
    };

public:
    unsigned size() const {
        return this->length;
    }
    void remove(T t)
    {

        if (this->length > 0) 
        {
            this->m_pHead = remove(this->m_pHead, t);
        }

    }

private:

    ListElem* m_pHead = nullptr;
    unsigned length = 0;
    
};

The full code can be found here.

Brandon
  • 33
  • 6

0 Answers0