gpt4 book ai didi

c++ - 自动创建对象,如何控制/增加名称?

转载 作者:行者123 更新时间:2023-11-30 02:35:54 25 4
gpt4 key购买 nike

我在使用用户输入的变量创建对象时遇到了一些障碍。基本上,程序确定用户想要什么类型的对象,创建它,然后询问用户是否要添加另一个对象。在这个例子中,对象是一个经理,它是雇员的一个子类。

void add_manager()
{
string name;
//Performs a bunch of checks to ensure the input is valid.
name = get_string_input("Please input the name of the employee.");
//Creates a manager object.
manager manager1(name);
//Goes back to previous function, restarts process of finding out employee type.
ask_employee();
}

我将把指向每个对象的指针存储在别处的动态数组中。数组的要点只是从每个对象中获取值以用于某些打印输出,所以我期望只是遍历数组,获取每个对象的值,然后打印。 (粗略的例子)

我不确定的部分是如何更改对象构造函数调用,以便将对象制作为 manager1、manager2 等。由于用户需要,制作的数量会有所不同,我希望保留他们以一种方式来区分。

由于我将通过指针访问对象,对象名称是否需要不同?或者对象和指针都可以同名吗?

最佳答案

由于管理器对象的数量可以是无限的,因此您无法为它们全部命名。 C++ 是一种静态类型语言。您严格需要将您的管理器对象保存在类似数组的结构中:

std::vector<manager *> vManagers;

void add_manager()
{
string name;
//Performs a bunch of checks to ensure the input is valid.
name = get_string_input("Please input the name of the employee.");
//Creates a manager object.
vManagers.push_back(new manager(name));
//Goes back to previous function, restarts process of finding out employee type.
while(ask_employee()
{
name = get_string_input("Please input the name of the employee.");
vManagers.push_back(new manager(name));
}
}

这样当你需要管理器对象时你可以调用:

 vManagers[n]->GetData();

但请注意,您需要在适当的地方删除管理器对象指针以避免泄漏:

delete vManagers[n];
vManagers[n] = NULL;

关于c++ - 自动创建对象,如何控制/增加名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33315400/

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