Я должен написать весь файл реализации .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;
}
Это правильно?
Задача ещё не решена.
Других решений пока нет …