我正在做餐馆管理计划。现在我正在尝试输出私人矢量数据并且卡住了。
所以我有一个Menu.h
private:
vector<Category> categories;
vector<Menu_Item> menu_items;
vector<Recipe> recipes;
vector<Ingredient> ingredients;
vector<Order> orders;
vector<Order_Item> order_items;
和Menu.cpp
Menu.read()
Menu.show()
读取函数从像这样的文件中读取
1010 Appetizers
1901 Entrees
1576 Desserts
1320 Drinks
并将这些值存储到适当的向量中,例如,这将是矢量类别。
我还有一个.h文件,用于所有不同类型的东西,如Menu_Item.h,Recipe.h等。我将值存储到矢量中:
menu_items.push_back(Menu_Item(meniID, catID, rID....
然而,在Menu_Item.h中,值为
private:
int menu_item_id;
int cat_id;
int recipe_id;
string menu_item_name;
double price;
show()函数向用户查询他/她想要看到的内容。假设用户想要查看特定的菜单项,如洋葱圈。我不能做的是
if(menu_items[0].menu_item_name == "Onion Rings")
因为它说menu_item_name值在Menu_Item.h中是私有的。如何访问私人数据?
答案 0 :(得分:1)
您必须公开menu_items或制作公开的getter函数,如下所示。
public:
vector<Menu_Item> get_menu_items(){ return menu_items;}
然后说如果你有一个名为Menu的这种类型的Menu对象,你可以这样做:
if(Menu.get_menu_items()[0].menu_item_name == "Onion Rings")
另一个可能的选择是,如果另一个特定的类需要访问权限,你可以创建一个朋友类,但通常这不是最好的设计决定。
在回复评论时,你可以这样做:
for(size_t n=0, n<menu_items.size()-1, ++n){
if(Menu.get_menu_items()[n].menu_item_name == "Onion rings")
cout << "something";
}
答案 1 :(得分:1)
两个选项:
public
,而不是private
。private
,但创建public
getters (and setters)以访问字段。