基础班:员工
派生类1:admin
派生类2:学术
我的问题是如何创建一个包含随机名称的50个员工对象的列表,并且对于每个员工,它应该是随机管理员工或学术人员。
class staff{
private: int name, int ID;
public:
staff(int name, int ID){
this->name = name;
this->ID = ID;
}
};
class academic:public staff{
public:
academic(int name, int ID):staff(name,ID){}
};
class admin:public staff{
public:
admin(int name, int ID):staff(name,ID){}
};
如果我想制作staff *[10]
;
它应该包含学术和管理员随机选择的工作人员和随机名称。
谢谢
答案 0 :(得分:2)
您的代码中还有许多其他问题需要解决才能使其正确(目前甚至无法编译)。但是,您可以执行以下操作。
std::random_device random_device;
std::mt19937 engine{random_device()};
std::uniform_int_distribution<int> die_distribution;
std::vector<std::unique_ptr<staff>> people;
for (int i = 0; i < 50; ++i)
{
if (die_distribution (engine) % 2)
{
people.emplace_back (new admin{die_distribution(engine), die_distribution(engine)});
}
else
{
people.emplace_back (new academic{die_distribution(engine), die_distribution(engine)});
}
}
您需要添加vector
,memory
和random
标题才能使其发挥作用。
如果由于某种原因您无法使用random
标题,则可以使用较旧的“随机”号码设施。包括cstdlib
和ctime
。
std::srand (std::time(0));
std::vector<std::unique_ptr<staff>> people;
for (int i = 0; i < 50; ++i)
{
if (std::rand() % 2)
{
people.emplace_back (new admin{ std::rand(), std::rand() });
}
else
{
people.emplace_back (new academic{ std::rand(), std::rand() });
}
}