gpt4 book ai didi

c++ - 如何使控制台库存系统动态化

转载 作者:行者123 更新时间:2023-11-30 05:40:50 25 4
gpt4 key购买 nike

我有一个存储“项目”类型的库存系统,它是一个抽象类。我有一个名为“Skates”的派生类。该程序允许用户将“Skates”添加到“Item”指针的 vector 中。用户输入溜冰鞋的型号和 ID,我将这些作为参数创建一个“溜冰鞋”对象。然后我使用“Item”指针指向那个“Skates”对象并将其添加到 vector 中。当用户想要编辑“Skates”对象时,我必须将其 dynamic_cast 返回到“Skates”对象,然后进行编辑。

std::vector<Item*> ItemCollection;
Item * item = new Skates("model1", 1);
ItemCollection.push_back(item);
//To retrieve it
Skates * skatesToEdit = dynamic_cast<Skates*>(ItemCollection[0]);

我现在面临的问题是考虑一个新的派生类,例如“滑板”类。我不想创建一个新方法来处理“滑板”类的编辑,例如:

Skateboard * skateboardToEdit = dynamic_cast<Skateboard*>(ItemCollection[0]);

因为这意味着每次我创建一个新的派生类时我都需要编写相同风格的代码。所以我想知道是否有一种方法可以让应用程序动态地知道它是什么派生类而无需我指定它。因此,它需要能够确定数据类型,然后提示用户以一种我认为不可能的动态方法编辑它拥有的任何属性(因为目标是让用户首先编辑对象)。

最佳答案

我建议您在这里可能不需要继承。与其使用像 Skates、Skateboard 这样的类,不如考虑只使用 Item 类,它是表示属性的键值的集合。这样您就不会真正关心项目的类别,您可以动态地列出和编辑属性。

关于c++ - 如何使控制台库存系统动态化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31406682/

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