0
我目前正試圖爲數據結構類實現一個雙鏈表。C++,使用模板實例化一個存儲對象實例的通用節點
我目前已經實現了一個通用的Node *類,並且想要保存我已經實現的另一個類Student(int i,int j)的一個實例。
這就是我試圖在我的主要方法做:
Student student1 = Student(10,11);
Node<Student()> node1 = Node<Student()> (student1);
這是我收到的錯誤。 當節點像int這樣的基本數據類型持有時,一切都奏效了,但我不確定如何解釋存儲int和存儲Student對象之間的區別。
我會喜歡任何見解或推動正確的方向。 謝謝。
這裏是我的執行節點。
#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
我很好奇這是否會工作,但是當我做我收到此錯誤:建築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查看調用) –
這是一個鏈接器錯誤,這可能意味着編譯步驟奏效。我猜你需要將Student.cpp添加到你的'g ++'命令行中,所以它被鏈接到你的主要.cpp文件中。 –
有關更多信息,請參閱http://stackoverflow.com/questions/3202136/using-g-to-compile-multiple-cpp-and-h-files –