I keep receiving a redefinition error during compilation, I've been trying to figure it out but I just couldn't solve the issue. ''DoubleNode.h''
#ifndef DOUBLENODE_
#define DOUBLENODE_
template<class ItemType>
class DoubleNode
{
private:
ItemType item;
DoubleNode<ItemType>* next; // Pointer to next node
DoubleNode<ItemType>* previous; // Pointer to previous node
public:
DoubleNode(); // Default Constructor
DoubleNode(const ItemType& anItem); // Parameterized Constructor
DoubleNode(const ItemType& anItem, DoubleNode<ItemType>* nextNodePtr, DoubleNode<ItemType>* previousNodePtr);
void setItem(const ItemType& anItem);
void setNext(DoubleNode<ItemType>* nextNodePtr);
void setPrevious(DoubleNode<ItemType>* previousNodePtr);
ItemType getItem() const ;
DoubleNode<ItemType>* getNext() const ;
DoubleNode<ItemType>* getPrevious() const ;
}; // end Node
#include "DoubleNode.cpp"
#endif
'' DoubleNode.cpp''
#include "DoubleNode.h"
//#include <cstddef>
template<class ItemType>
DoubleNode<ItemType>::DoubleNode() : next(nullptr), previous(nullptr)
{
}
template<class ItemType>
DoubleNode<ItemType>::DoubleNode(const ItemType& anItem) : item(anItem), next(nullptr), previous(nullptr)
{
} // end constructor
template<class ItemType>
DoubleNode<ItemType>::DoubleNode(const ItemType& anItem, DoubleNode<ItemType>* nextNodePtr, DoubleNode<ItemType>* previousNodePtr) :item(anItem), next(nextNodePtr), previous(previousNodePtr)
{
} // end constructor
template<class ItemType>
void DoubleNode<ItemType>::setItem(const ItemType& anItem)
{
item = anItem;
} // end setItem
template<class ItemType>
void DoubleNode<ItemType>::setNext(DoubleNode<ItemType>* nextNodePtr)
{
next = nextNodePtr;
} // end setNext
// set previous pointer
template<class ItemType>
void DoubleNode<ItemType>::setPrevious(DoubleNode<ItemType>* previousNodePtr)
{
previous = previousNodePtr;
}
template<class ItemType>
ItemType DoubleNode<ItemType>::getItem() const
{
return item;
} // end getItem
template<class ItemType>
DoubleNode<ItemType>* DoubleNode<ItemType>::getNext() const
{
return next;
} // end getNext
template<class ItemType>
DoubleNode<ItemType>* DoubleNode<ItemType>::getPrevious() const
{
return previous;
} // end getNext
The compiler constantly tells me that I redefined my constructors, I've done a similar project with just a single node before, which looks very similar but I did not receive the same error. Can someone explain to me what I'm missing or what I'm doing wrong? I've tried figuring out what a redefinition compile error means but I still haven't been able to pinpoint to exactly what I'm doing wrong in this project. I'm trying to create a node where it can traverse forward and backward.