2016-04-11 21 views
0

我目前正試圖爲數據結構類實現一個雙鏈表。C++,使用模板實例化一個存儲對象實例的通用節點

我目前已經實現了一個通用的Node *類,並且想要保存我已經實現的另一個類Student(int i,int j)的一個實例。

這就是我試圖在我的主要方法做:

Student student1 = Student(10,11); 
Node<Student()> node1 = Node<Student()> (student1); 

這是我收到的錯誤。 當節點像int這樣的基本數據類型持有時,一切都奏效了,但我不確定如何解釋存儲int和存儲Student對象之間的區別。

我會喜歡任何見解或推動正確的方向。 謝謝。

enter image description here

這裏是我的執行節點。

#ifndef NODE_H 
#define NODE_H 

template <class T> 
class Node 
{ 
    public: 
    Node(); 
    Node(T k); 
    virtual~Node(); 

    T key; 
    Node<T>* prev; 
    Node<T>* next; 
}; 
#endif 

//default constructor 
template <class T> 
Node<T>::Node() 
{ 
    prev = NULL; 
    next = NULL; 
} 

template <class T> 
Node<T>::Node(T k) 
{ 
    prev = NULL; 
    next = NULL; 
    key = k; 
} 

template<class T> 
Node<T>::~Node() 
{ 
//implement 
} 

Student.cpp

#include "Student.h" 

Student::Student() 
{ 
    mArrivalTime = 0; 
    mTimeNeeded = 0; 
} 
Student::Student(int arrivalTime, int timeNeeded) 
{ 
    mArrivalTime = arrivalTime; 
    mTimeNeeded = timeNeeded; 
} 

Student::~Student() 
{ 
    //implement 
} 

int Student::getArrivalTime() 
{ 
    return mArrivalTime; 
} 

int Student::getTimeNeeded() 
{ 
    return mTimeNeeded; 
} 

Student.h

#ifndef STUDENT_H 
#define STUDENT_H 

using namespace std; 
class Student 
{ 
    private: 
     int mArrivalTime; 
     int mTimeNeeded; 

    public: 
     Student(); 
     Student(int arrivalTime, int timeNeeded); 
     ~Student(); 
     int getArrivalTime(); 
     int getTimeNeeded(); 
}; 
#endif 

回答

3

不要使用(),只需使用類名稱。例如:

Node<Student> node1 = Node<Student> (student1); 
+0

我很好奇這是否會工作,但是當我做我收到此錯誤:建築x86_64的未定義符號: 「學生::學生(INT,INT)」,從引用: _main in Assignment4-1de395.o 「Student :: Student()」,引用來自: 節點 ::作業中的節點(學生)-4-1de395.o 「學生::〜學生()」,引用自: _main in Assignment4-1de395.o 節點 ::〜Assignment4-1de395.o中的Node() ld:找不到架構x86_64的符號 clang:error:linker com任務失敗,退出代碼1(使用-v查看調用) –

+0

這是一個鏈接器錯誤,這可能意味着編譯步驟奏效。我猜你需要將Student.cpp添加到你的'g ++'命令行中,所以它被鏈接到你的主要.cpp文件中。 –

+0

有關更多信息,請參閱http://stackoverflow.com/questions/3202136/using-g-to-compile-multiple-cpp-and-h-files –