Description
Creating a Template
C++ allows a programmer to create templates that can be instantiated. A template allows objects
to be created that can store (or use) data of any type.
In this lab you will convert the int linked list class to a template class. Start by downloading the
zipfile. It contains:
LinkedList.h
LinkedList.cpp
A makefile. This makefile won’t work unless you follow the instructions below.
template_test.cpp, a driver program you should fill in
To convert the class to a template class you must:
1. Put the entire class (the .h file class definition, and the .cpp file method implementations) in
one .h file. For this lab, put the entire class into LinkedList.h. This means you should copy
most of LinkedList.cpp (all of it except the #include directives) into the bottom of LinkedList.h.
2. Preface the class definition and each member function implementation with this line:
template
3. The class qualifier (LinkedList::) that appears before a method name in each implementation,
should be replaced by LinkedList::
4. Whenever the type that the class contains (int in our case) is referred to it should be replaced
with the word Type. Note that you should not replace those occurences of int that do not refer
to the data in a node or in the list.
For example here is the add method before and after these changes:
void LinkedList::add(int x){
Node *p = new Node(x);
// Assign appropriate values to the new node
p -> next = head;
// Make the head point to the new node
head = p;
size++;
}
and the “templated” version
template
void LinkedList::add(Type x){
Node *p = new Node(x); //temporary node
// Assign appropriate values to the new node
p -> data = x;
// i
CMPT 225 Lab 9: C++ Template Classes
www.sfu.ca/~shermer/Teaching/cmpt-225-Summer2019/labs/CMPT225-Lab9.html 2/2
// Make the head point to the new node
head = p;
size++;
}
To use your linked list template class in a program you need to specify what type is to be stored:
LinkedList creates a linked list of ints, and
LinkedList creates a linked list of strings
Testing
Test your linked list template by modifying the driver program in template_test.cpp so that it creates
an int linked list and a string linked list, and uses each of the LinkedList methods at least once for
each type of list. (Note that the provided version of template_test does not do this for the LinkedList
with int hardwired in.)
When you have done this, please show a TA your modified driver program and the results of running
it to receive your marks for this lab.