Как перегрузить оператор ‘=’ в односвязном списке?

Я должен написать весь файл реализации .hpp, состоящий из определений функций, основанных на данном файле .h со всеми объявлениями и описаниями. Я застрял на перегрузке функции operator =.

linkedlist.h

template <class T>
class LinkedList
{
public:
T m_data;                  // Data to be stored
LinkedList<T>* m_next;     // Pointer to the next element in the list
.
.
.
.
// Purpose: performs a deep copy of the data from rhs into this linked list
// Parameters: rhs is linked list to be copied
// Returns: *this
// Postconditions: this list contains same data values (in the same order)
//     as are in rhs; any memory previously used by this list has been
//     deallocated.
LinkedList<T>&  operator= (const LinkedList<T>& rhs);
.
.
.
};

Это то, что я пока имею для .hpp в отношении оператора =

linkedlist.hpp

template <typename T>
LinkedList<T>& LinkedList::operator= (const LinkedList<T>& rhs)
{
if(this != rhs) //alias check
{
LinkedList* tmp = this -> m_next;
LinkedList* tmp2 = NULL;
while(tmp-> != NULL)   //deletes the 'this' linkedlist
{
tmp2 = tmp -> m_next;
delete tmp;
tmp = tmp2 -> m_next;
}
LinkedList* p = rhs -> m_next;
while(p->m_next != NULL)  //copies the rhs linked list to the 'this' linked list
{
m_data = p -> m_data;
p = rhs -> m_next;
}
}
return *this;
}

Это правильно?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]