CS 340 - 2/21/13 typedef revisited // queue.h #ifndef QUEUECLASS #define QUEUECLASS typedef Complex ElemType; #include class Queue; class Node { private: ElemType elem_; Node * next_; Node (const ElemType&); }; ..... struct dynArrStruct { double value1; int value2; int value3; } typedef struct dynArrStruct dynArr; typedef dynArr* dynArrPtr; void f1 (dynArrPtr* param) // C { .. pass-by-reference in C is done using pass-by-address void f1 (dynArrPtr& param) // C++ { ... /////////////////////////////////// C++ Templated Classes // file: queueTemplate.h template class Node { friend Queue; private: T elem_; Node* next_; Node (const T&); }; template Node::Node (const T& el) : elem_ (el), next_(NULL) { } template class Queue { private: Node* front; Node* back; public: Queue(); Queue(const Queue&); ~Queue(); Queue& operator=(const Queue&); bool isEmpty() const; void insert(const T&); const T& front () const; void remove (); void clear (); }; template Queue::Queue () : front_ (NULL), back_ (NULL) { } // end of queueTemplate.h =============================== Use the templated class // file myProject.cpp #include "queueTemplate.h" int main () { Queue q1; Queue q2; Queue q3; Queue q4; q1.insert(5); q2.insert(5.3); q2.insert(4); /// file1.cpp #include "templateQueue.h" #inlcude "templateQueue.cpp" Queue; /// file2.cpp #include "templateQueue.h" int main() { Queue qDouble;