title: Class does not name a data type?
body: <p>I don't know what I did, because it was working fine (i.e. had different errors) and then suddenly my entire class just didn't exist or something because now all my function declarations and definitions just aren't happening. I don't know what's wrong. </p>
  
  <p>I cannot find any issues with the includes, the syntax, the headers, the header guards, the spelling. I literally can find nothing. I hope it's something stupid, but I don't understand why it's doing this. Someone please help! I have put my #include of the cpp file for the LinkedList on the header and included the header on the cpp like normal and included in both and none of them have worked. i have triple read all the words to make sure all the spelling and everything matches.</p>
  
  <p>LinkedList.h</p>
  
  <pre><code>#ifndef LINKEDLIST_H
  #define LINKEDLIST_H
  
  #include "SLNode.h"
  #include "ListInterface.h"
  
  
  template &lt;typename ItemType&gt;
  class LinkedList: public ListInterface&lt;ItemType&gt;
  {
  public:
      LinkedList();
      void addFront(SLNode&lt;ItemType&gt;* entry);
  
      bool isEmpty();
      int getLength () const;
      void insert(int newPosition, const ItemType &amp;newEntry);
      void remove (int position);
      void clear();
      ItemType getEntry(int position) const;
      void setEntry (int position, const ItemType&amp; newEntry);
  
  
  private:
      SLNode&lt;ItemType&gt;* m_front;
  };
  #include "LinkedList.cpp"
  
  #endif // LINKEDLIST_H
  </code></pre>
  
  <p>LinkedList.cpp</p>
  
  <pre><code>#include &lt;iostream&gt;
  
  template &lt;typename ItemType&gt;
  LinkedList&lt;ItemType&gt;::LinkedList()
  {
      m_front = nullptr;
  }
  
  template &lt;typename ItemType&gt;
  void LinkedList&lt;ItemType&gt;::addFront(SLNode&lt;ItemType&gt; *entry){}
  
  template &lt;typename ItemType&gt;
  bool LinkedList&lt;ItemType&gt;::isEmpty (){}
  
  template &lt;typename ItemType&gt;
  int LinkedList&lt;ItemType&gt;::getLength() const{}
  
  template &lt;typename ItemType&gt;
  void LinkedList&lt;ItemType&gt;::insert(int newPosition, const ItemType &amp;newEntry){}
  
  template &lt;typename ItemType&gt;
  void LinkedList&lt;ItemType&gt;::remove(int position){}
  
  template &lt;typename ItemType&gt;
  void LinkedList&lt;ItemType&gt;::clear() {}
  
  template &lt;typename ItemType&gt;
  ItemType LinkedList&lt;ItemType&gt;::getEntry(int position) const {}
  
  
  template &lt;typename ItemType&gt;
  void LinkedList&lt;ItemType&gt;::setEntry(int position, const ItemType &amp;newEntry){}
  </code></pre>
  
  <p>ListInterface.h</p>
  
  <pre><code>ListInterface.h
  #ifndef _LIST_INTERFACE
  #define _LIST_INTERFACE
  
  #include "PrecondViolatedExcep.h"
  
  template&lt;class ItemType&gt;
  class ListInterface
  {
  public:
     /** Virtual destructor allows concrete implementations to clean up
     heap memory when the List is discarded. */
  
     virtual ~ListInterface() {}
  
     /** Sees whether this list is empty.
      @return True if the list is empty; otherwise returns false. */
  
     virtual bool isEmpty() const = 0;
  
     /** Gets the current number of entries in this list.
      @return The integer number of entries currently in the list. */
  
     virtual int getLength() const = 0;
  
     /** Inserts an entry into this list at a given position.
      @pre  None.
      @post  If 1 &lt;= position &lt;= getLength() + 1 and the insertion is
     successful, newEntry is at the given position in the list, and
     other entries are renumbered accordingly.
      @param newPosition  The list position at which to insert newEntry.
      @param newEntry  The entry to insert into the list.
      @throw  PrecondViolatedExcep if insertion cannot be performed. */
  
     virtual void insert(int newPosition, const ItemType&amp; newEntry) /* 
  throw(PrecondViolatedExcep) */ = 0;
  
      /** Removes the entry at a given position from this list.
      @pre  None.
      @post  If 1 &lt;= position &lt;= getLength() and the removal is successful,
     the entry at the given position in the list is removed, and other
     items are renumbered accordingly.
      @param position  The list position of the entry to remove.
      @throw  PrecondViolatedExcep if removal cannot be performed. */
  
     virtual void remove(int position) /* throw(PrecondViolatedExcep) */ = 0;
  
     /** Removes all entries from this list.
      @post  List contains no entries and the count of items is 0. */
  
    virtual void clear() = 0;
  
      /** Gets the entry at the given position in this list.
      @pre  1 &lt;= position &lt;= getLength().
      @post  The desired entry has been returned.
      @param position  The list position of the desired entry.
      @throw  PrecondViolatedExcep if no such entry exists. */
  
     virtual ItemType getEntry(int position) const /* 
     throw(PrecondViolatedExcep) */ = 0;
  
     /** Replaces the entry at the given position in this list.
      @pre  1 &lt;= position &lt;= getLength().
      @post  The entry at the given position is newEntry.
      @param position  The list position of the entry to replace.
      @param newEntry  The replacement entry.
      @throw  PrecondViolatedExcep if no such entry exists. */
  
     virtual void setEntry(int position, const ItemType&amp; newEntry) /* 
  throw(PrecondViolatedExcep) */ = 0;
  
  }; // end ListInterface
  #endif
  </code></pre>
  
  <p>Errors:
  LinkedList.cpp:4: error: 'LinkedList' does not name a type
   LinkedList::LinkedList()</p>
  
  <p>Lab-04/LinkedList.cpp:10: error: expected initializer before '&lt;' token
   void LinkedList::addFront(SLNode *entry)</p>
  
  <p>all the functions in the cpp have the same error as the second one</p>