SortedList.h is an abstract template (pure virtual functions), LinkedSortedList.h derives SortedList.h and is a template, and LinkedSortedList.cpp is a template implementing the functions in LinkedSortedList.h.
My Error is when I'm trying to override the functions from SortedList.h in LinkedSortedList.h.
Method in SortedList.h:
virtual void clear() = 0;   
Method in LinkedSortedList.h:
template <typename Elm> void SortedList<Elm>::clear() override; 
error:
error C3240: 'clear' : must be a non-overloaded abstract member function of 'SortedList'
error C2838: 'clear' : illegal qualified name in member declaration
I've tried:
void SortedList<Elm>::clear(){}
But I still get the same error. I've tried to find the solution on the web, but have failed.
Here is SortedList.h It must not be changed:
#ifndef _SortedListClass_
#define _SortedListClass_
template <class Elm> class SortedList {
public:
  // -------------------------------------------------------------------
  // Pure virtual functions -- you must implement each of the following
  // functions in your implementation:
  // -------------------------------------------------------------------
  // Clear the list.  Free any dynamic storage.
  virtual void clear() = 0;          
                                 
  // Insert a value into the list.  Return true if successful, false
  // if failure.
  virtual bool insert(Elm newvalue) = 0;
            
  // Get AND DELETE the first element of the list, placing it into the
  // return variable "value".  If the list is empty, return false, otherwise
  // return true.
  virtual bool getfirst(Elm &returnvalue) = 0;
  // Print out the entire list to cout.  Print an appropriate message
  // if the list is empty.  Note:  the "const" keyword indicates that
  // this function cannot change the contents of the list.
  virtual void print() const = 0;
  // Check to see if "value" is in the list.  If it is found in the list,
  // return true, otherwise return false.  Like print(), this function is
  // declared with the "const" keyword, and so cannot change the contents
  // of the list.
  virtual bool find(Elm searchvalue) const = 0;
  // Return the number of items in the list
  virtual int size() const = 0;
};
#endif
Here is LinkedSortedList.h This can be rewritten if needed:
#ifndef _LinkedSortedList_
#define _LinkedSortedList_
#include "SortedList.h"
#include "LinkedNode.h"
#include <iostream>
using namespace std;
template <class Elm> class LinkedSortedList:public SortedList<Elm>
{
public:
    template <typename Elm> LinkedSortedList();
    virtual void SortedList<Elm>::clear();          
    virtual bool SortedList<Elm>::insert(Elm newvalue);
    virtual bool SortedList<Elm>::getfirst(Elm &returnvalue);
    virtual void SortedList<Elm>::print() const;
    virtual bool SortedList<Elm>::find(Elm searchvalue) const;
    virtual int SortedList<Elm>::size() const;
private:
    LinkedNode<Elm> *head;
    int num;
};
#endif
LinkedSortedList.cpp is the implementation for LinkedSortedList, and has these two lines at the end:
template class LinkedSortedList<int>;
template class LinkedSortedList<double>;
 
     
    