invalid use of template name without an argument list

95,485

Write it like this:

template<typename T>
LinkedList<T>::LinkedList()
{
   start = nullptr;
   current = nullptr;
}

And similarly for other member functions. But you'll run into another problem - declarations and definitions of a template can't be separated to different files.

Share:
95,485
Alladin
Author by

Alladin

Web Developer

Updated on March 06, 2020

Comments

  • Alladin
    Alladin about 4 years

    I am facing a problem with my linked list class, I have created the interface and implementation files of the class, but when I build it, this error occurs: "invalid use of template name 'LinkedList' without an argument list". here's my interface file:

    #ifndef LINKEDLIST_H
    #define LINKEDLIST_H
    
    template <typename T>
    struct Node{
        T info;
        Node<T> *next;
    };
    
    template <typename T>
    class LinkedList
    {
        Node<T> *start;
        Node<T> *current;
    public:
        LinkedList();
        ~LinkedList();
    };
    
    #endif // LINKEDLIST_H
    

    and this is my implementation code:

    #include "LinkedList.h"
    
    LinkedList::LinkedList()
    {
       start = nullptr;
       current = nullptr;
    }
    
    LinkedList::~LinkedList()
      {
    
      }
    
  • Alladin
    Alladin over 10 years
    I have done it, but as you said, there is an error with the declaration of 'NULL', it says that NULL was not declared in this scope. how can I solve this issue??
  • jrok
    jrok over 10 years
    @Alladinsaoudi NULL is a macro that's defined in several different headers listed here. You'll have to include at least one of them where you want to use it.
  • Alladin
    Alladin over 10 years
    @jrol thanks a looooooooooot , i do really appreciate your help. :))))
  • Walter
    Walter over 10 years
    @Alladinsaoudi With C++11 better use nullptr instead of NULL. Moreover, you can always simply use 0 instead of NULL (but nullptr is better as the compiler can make some checks).
  • Isaac Woods
    Isaac Woods over 8 years
    Anyone using C++11 or above should now use nullptr.
  • ignacio
    ignacio about 3 years
    Maybe it is worth mentioning that sometimes the library already provides a specialization for the class you want to use, like a Vector3 that could be used as Vector3<double> or Vector3d