2011-04-27 4 views
3

이 오류가 발생하는 방법에 대한 통찰력이있는 사람이 있습니까? 나는이 코드를 가지고 LinkedList의를 C++에서 내 주요 방법에서 템플릿을 만들어 :`List '는 템플릿이 아닙니다

`List' is not a template

나는이 파일을 포함하고있다 :

List<int> list; 
list.insert(1, 9); 

을 그리고 첫 번째 줄에이 오류를 얻고있다 :

template <typename T> 
class List 
{ 
public: 
     List(); 
     List(const List& aList); 
     ~List(); 

     bool isEmpty() const; 
     int getLength() const; 
     void insert(int index, const T& newItem); 
     void remove(int index); 
     void retrieve(int index, T& dataItem) const; 

private: 
     struct ListNode 
     { 
       T item; 
       ListNode *next; 
     }; 

     int size; 
     ListNode *head; 

     ListNode *find(int index) const; 
}; 

실용적인 이유로 구현 파일을 게시하지 않지만 필요한 경우 개별 기능을 게시합니다.

List(const List& aList);List(const List<T>& aList);으로 변경하려고했지만 실제로 변경되지 않았습니다. 템플릿 구문이 혼란 스럽습니다>. <

+4

빈 몸체로 기능을 조롱 할 때 나에게 잘 맞습니다. 오류는 다른 위치에 있어야합니다. 또한 템플릿 코드를 .cpp 파일에 넣지 마십시오. 컴파일러는 인스턴스화해야하는 정확한 코드를 알아야하므로 헤더에 있어야합니다. – Xeo

+2

g ++를 사용하여 링크 시간에 정의되지 않은 함수를 모듈로 컴파일합니다. –

+0

헤더와 별도의 파일에 구현되어 있습니까? – jonsca

답변

2

List 템플릿 클래스가 다른 네임 스페이스에 있지 않습니까?

당신이 생각하는 클래스를 인스턴스화하기 위해 템플릿 클래스의 이름을 고유 한 이름으로 변경해 보았습니까?

0

.cpp 파일에 템플릿 코드를 작성했을 가능성이 있습니까?

나는이 선으로의 갈거야 :

Not posting the implementation file 

템플릿 코드는 오직 더 "실행 파일"이 없을 수 있으며, .H 파일에있을 수 있습니다.
이유가 어리 석으므로 복잡합니다.

+0

이것은 이유가 아닙니다. 이 답변은 이미 게시 및 삭제되었습니다. 그러나이 오류는 관련이 없습니다. –

관련 문제