2013-08-12 4 views
18

У меня возникла проблема с классом связанного списка, я создал интерфейс и файлы реализации этого класса, но когда я его создаю, возникает эта ошибка: «недопустимое использование шаблона имя «LinkedList» без списка аргументов ». вот мой интерфейс файла:неверное использование имени шаблона без списка аргументов

#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 

и это мой код реализации:

#include "LinkedList.h" 

LinkedList::LinkedList() 
{ 
    start = nullptr; 
    current = nullptr; 
} 

LinkedList::~LinkedList() 
    { 

    } 
+3

'шаблон LinkedList :: LinkedList()' и реализовать его в заголовке – billz

ответ

34

Написать это так:

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

И аналогично для других функций-членов. Но вы столкнетесь с другой проблемой - объявлениями и определениями шаблона can't be separated для разных файлов.

+0

я это сделал, но, как вы сказали, есть ошибка с декларацией «NULL», он говорит, что NULL не был объявлен в этот объем. как я могу решить эту проблему? – Alladin

+0

@Alladinsaoudi NULL - это макрос, который определен в нескольких разных заголовках, перечисленных [здесь] (http://en.cppreference.com/w/cpp/types/NULL). Вам нужно будет включить хотя бы один из них, где вы хотите его использовать. – jrok

+0

@jrol благодарит looooooooooot, я действительно ценю вашу помощь. :)))) – Alladin

Смежные вопросы