#pragma once template class CycleLinkedList; template class CycleLinkedListNode; template class CycleLinkedListNode { private: friend class CycleLinkedList; templateCycleLinkedListNode(T2 &&d); CycleLinkedListNode* last, * next; ~CycleLinkedListNode() = default; CycleLinkedListNode(const CycleLinkedListNode& d); CycleLinkedListNode(CycleLinkedListNode&& d) = delete; CycleLinkedListNode& operator= (CycleLinkedListNode&& d) = delete; CycleLinkedListNode& operator= (const CycleLinkedListNode & d); public: T data; CycleLinkedListNode* getNext(); CycleLinkedListNode* getLast(); }; template class CycleLinkedList { private: CycleLinkedListNode* head; int total; public: CycleLinkedList(); ~CycleLinkedList(); CycleLinkedList(const CycleLinkedList& data); CycleLinkedList(CycleLinkedList&& data) noexcept; CycleLinkedList& operator= (CycleLinkedList&& data) noexcept; CycleLinkedList& operator= (const CycleLinkedList& data); bool isEmpty(); int size(); void clear(); templatevoid add(T2 &&data); CycleLinkedListNode* getHead(); void remove(CycleLinkedListNode* node); }; #include"CycleLinkedList.cpp"