gpt4 book ai didi

C++ 访问私有(private) vector 值

转载 作者:行者123 更新时间:2023-11-28 03:45:38 26 4
gpt4 key购买 nike

我正在学习餐厅管理类(class)。现在我正在尝试输出私有(private) vector 数据,但卡住了。

所以我有一个 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

并将这些值存储到适当的 vector 中,例如这个 vector 类别。

我还有一个 .h 文件,用于所有不同类型的内容,例如 Menu_Item.h、Recipe.h 等。我将值存储到 vector 中,如下所示:

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 中是私有(private)的。我如何访问私有(private)数据?

最佳答案

您必须公开 menu_items 或制作如下所示的公共(public) 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";
}

关于C++ 访问私有(private) vector 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7779638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com