第九章:迭代器(Template)
一、问题的提出
现在有两个菜单(早餐和中餐),其实现方式各不相同:一个用数组,一个用vector(书上用java的ArrayList,但是c++没有,用vector代替!)
#ifndef ITERATOR__H #define ITERATOR__H #include <string> #include <iostream> #include <vector> using namespace std; //定义菜单项 class MenuItem { public: string name; //菜名 string description; //菜的介绍 bool vegetarian; //是否是素 double price; //价格 MenuItem(); MenuItem(string name, string description, bool vegetarian, double price);//构造函数,初始化菜单项 string getName(); string getDescription(); double getPrice(); bool isVegetrian(); }; //早餐菜单 class PancakeHouseMenu { public: vector<MenuItem> menuitems;//使用vector存储菜单项 PancakeHouseMenu(); void addItem(string name, string description, bool vegetarian, double price);//添加菜单项 vector<MenuItem> getMenuItems();//返回菜单项列表 }; //中餐菜单 #define MAX_ITEMS 6 //数组菜单默认大小设为6 class DinerMenu { public: int size; //菜单数目 MenuItem menuItems[MAX_ITEMS];//使用数组保存菜单项 DinerMenu(); void addItem(string name, string description, bool vegetarian, double price);//添加菜单项 MenuItem* getMenuItems();//返回菜单数组 }; #endif
菜单类的实现: