我寫了一個鏈接列表,存儲有關學生的信息。我如何將它更改爲可以存儲整數或任何其他類型的模板?我是否需要在鏈表類中重載方法,因爲他們現在需要6個參數?我的意思是,現在在年底(學生數據)插入方法是這樣的:更改鏈接列表爲模板
void insertAtEnd(int index, string name, string surname, int yearOfStudy, string fieldOfStudy, string specialty);
如果我想存儲整數,它看起來就像這樣:
void insertAtEnd(int Data);
所以,如果我想要使用模板來添加學生,例如整數,如果它看起來像這樣?
template <class T>
Class llist{
void insertAtEnd(int index, string name, string surname, int yearOfStudy, string fieldOfStudy, string specialty);
void insertAtEnd <T Data>;
}
這是實現學生和LinkedList類:
class student {
public:
int index;
string name;
string surname;
int yearOfStudy;
string fieldOfStudy;
string specialty;
student *next; //pointer to next item
student();
};
student::student() {
next = 0;
}
class llist {
public:
void insertAtEnd (int index, string name, string surname, int yearOfStudy, string fieldOfStudy, string specialty);
void insertAtBeginning (int index, string name, string surname, int yearOfStudy, string fieldOfStudy, string specialty);
void insertAtGivenPosition(int a, string n, int index, string name, string surname, int yearOfStudy, string fieldOfStudy, string specialty);
void findStudent(int index, string surname);
void deleteLast();
void deleteSelected(int index, string surname);
void deleteAll();
void displayList();
student *first; //pointer on first elem
llist();
};
考慮使用'std :: list'甚至是'std :: forward_list'而不是侵入性成員。至於你的問題,我不明白你想做什麼。如果你只是想允許用戶使用*只是一個索引值,你可以簡單地使用[function overload](http://en.cppreference.com/w/cpp/language/overload_resolution)。簡而言之,如果參數足夠明確,可能會有許多具有相同名稱的函數。編譯器將爲提供給函數調用的參數使用正確的一個。 –
我不得不自己實現列表,不能使用std :: forward_list。起初,我必須實施存儲學生的列表。所以我做到了,它運行良好。現在我必須用模板重做它,所以列表可以存儲任何類型的數據。 – Ensz