// File: lab9main2.cpp // // Test file for the Book and Pizza classes #include #include "OrderItem.h" #include "Book.h" #include "Pizza.h" using namespace std ; unsigned int TotalTally(const vector& v) { unsigned int cost = 0 ; for (unsigned int i=0 ; i < v.size() ; i++) { cost += ItemCost(*v[i]) ; } return cost ; } int main() { vector myOrder ; // vector of pointers to OrderItem Pizza *PizzaPtr ; Book *BookPtr ; // Order some pizza and books // PizzaPtr = new Pizza() ; PizzaPtr->PrintItem() ; // should be cheese myOrder.push_back(PizzaPtr) ; cout << "\n" ; PizzaPtr = new Pizza() ; PizzaPtr->AddTopping("pepperoni") ; PizzaPtr->AddTopping("ham") ; PizzaPtr->AddTopping("bacon") ; PizzaPtr->AddTopping("sausage") ; PizzaPtr->PrintItem() ; // should be "The Meats" myOrder.push_back(PizzaPtr) ; cout << "\n" ; BookPtr = new Book("The Hobbit", "J.R.R. Tolkien", 1234, 8) ; BookPtr->SetRating(7) ; BookPtr->PrintItem() ; myOrder.push_back(BookPtr) ; cout << "\n" ; PizzaPtr = new Pizza() ; PizzaPtr->AddTopping("spinach-alfredo") ; PizzaPtr->AddTopping("chicken") ; PizzaPtr->AddTopping("tomato") ; PizzaPtr->PrintItem() ; // yes, this is actually a standard PJ's pizza myOrder.push_back(PizzaPtr) ; cout << "\n" ; BookPtr = new Book("The Once and Future King", "T.H. White", 7239, 9) ; BookPtr->SetRating(5) ; BookPtr->PrintItem() ; myOrder.push_back(BookPtr) ; cout << "\n" ; BookPtr = new Book("Harry Potter and the Sorcerer's Stone", "J.K. Rowling", 9212, 15) ; BookPtr->PrintItem() ; myOrder.push_back(BookPtr) ; cout << "\n" ; PizzaPtr = new Pizza() ; PizzaPtr->AddTopping("pepperoni") ; PizzaPtr->AddTopping("ham") ; PizzaPtr->AddTopping("onions") ; PizzaPtr->AddTopping("Italian-sausage") ; PizzaPtr->AddTopping("mushrooms") ; PizzaPtr->AddTopping("green-peppers") ; PizzaPtr->AddTopping("black-olives") ; PizzaPtr->PrintItem() ; // should be "The Works" myOrder.push_back(PizzaPtr) ; cout << "\n" ; cout << "\n\nIterate through the vector:\n" ; for (unsigned int i=0 ; i < myOrder.size() ; i++) { cout << "[Item #" << i << "] " ; myOrder[i]->PrintItem() ; } cout << "--------------------------------------------\n" ; cout << "Total cost = $" << TotalTally(myOrder) << "\n" ; }