2014-06-15 3 views
1

저는 컴퓨터 과학 학생이며 현재 C++ Templates을 공부하고 있습니다. 우리는 Linked List 템플릿 클래스를 작성하도록 지시했다 그리고 우리는 (이 완료되지 않은 코드가 있습니다) STL을 사용하는 것은 허용되지 않습니다C++ 템플릿 클래스

template <class T> 
class LinkedList 
{ 
private: 
    //////// NODE CLASS ////////// 
    template <class T> 
    class Node 
    { 
    public: 
     ///// DATA MEMBERS 
     T *m_val; 
     Node<T> *m_next; 
     Node<T> *m_prev; 
     // CTORS 
     Node(T *val) : m_val(val) { m_next = NULL; m_prev = NULL; } 
     Node(T *val, Node<T> *next, Node<T> *prev) : m_val(val), m_next(next), m_prev(prev) { } 
     // C.CTOR 
     Node(const Node<T> & n) { m_val = n->m_val; m_next = n->m_next; m_prev = n->m_prev; } 
     // DTOR 
     ~Node() { delete m_val; if (m_prev) m_prev->m_next = m_next; if (m_next) m_next->m_prev = m_prev; } 
    }; 
    /////////////////////// 

    Node<T> *first; 
public: 
    LinkedList(T*) 
    { 

    } 
    ~LinkedList(); 
}; 

template <class T> 
LinkedList<T>::LinkedList(T* t) 
{ 
    first = Node<T>(t); /// <---- PROBLEM HERE 
} 

그러나 문제는 컴파일러가 나를 Node를 사용하지 않는다는 것입니다 생성자 ..

내가 뭘 잘못하고 있니?

편집 :

내가 말했듯이,이 미완성 코드는, 그래서 내가 (문제가 어디에서 오는지 내가 직접 볼 수 없기 때문에) 혼동 될 것이다지고있어 오류를 생각했다. first는이 때문에

first = Node<T>(t); 

필요

first = new Node<T>(t); 

1>------ Build started: Project: Ex4, Configuration: Debug Win32 ------ 
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup 
1>c:\users\dan\documents\visual studio 2010\Projects\Ex4\Debug\Ex4.exe : fatal error LNK1120: 1 unresolved externals 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 
+3

오류를 추가하십시오. – Scis

+0

솔직하게 말하면 +1을받습니다. –

+3

먼저 'Node'는 템플릿이 아니어야합니다. –

답변

1

라인 : 어쨌든

은 여기 (마이크로 소프트 비주얼 C++ 2010 익스프레스 디버깅) 오류입니다 Node*, 아니 Node.

또한 사용하여 초기화 할 수 있습니다 : 선호하는 방식이다

template <class T> 
LinkedList<T>::LinkedList(T* t) : first(new Node<T>(t)) 
{ 
} 

합니다.