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.
Comments
-
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 over 10 yearsI 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 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 over 10 years@jrol thanks a looooooooooot , i do really appreciate your help. :))))
-
Walter over 10 years@Alladinsaoudi With C++11 better use
nullptr
instead ofNULL
. Moreover, you can always simply use0
instead ofNULL
(butnullptr
is better as the compiler can make some checks). -
Isaac Woods over 8 yearsAnyone using C++11 or above should now use
nullptr
. -
ignacio about 3 yearsMaybe 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 asVector3<double>
orVector3d