如何在关闭并重新启动应用程序后仍阻止我的id? 所以我必须做一个C++赋值,我有以下的指令:
在私有部分添加:如何在关闭并重新启动应用程序后仍阻止我的id? 所以我必须做一个C++赋值,我有以下的指令:,c++,C++,在私有部分添加: int id; //contains an unique number to identify this object; //this number may not be used again! 要启用此功能,请执行以下操作: 向类中添加静态私有变量,以便跟踪 到目前为止创建的对象数 添加一个静态公共函数以获取此编号 注意:关闭并重新启动应用程序后,使用的id号仍应被阻止 我不太了解这项任务,也不知道如何实施。你能帮我做这个吗 我能为你做点事。如果您有任何问
int id; //contains an unique number to identify this object;
//this number may not be used again!
要启用此功能,请执行以下操作:
我不太了解这项任务,也不知道如何实施。你能帮我做这个吗 我能为你做点事。如果您有任何问题,请在评论中告诉我。这是我的密码:
#包括
#包括
#包括
#包括
#包括
#包括
const char*DATAFILE_NAME=“data.dat”;
类对象
{
公众:
使用id_t=int;
私人:
静态constexpr id_t MAX_id=std::numeric_limits::MAX();
创建的静态id_t对象;
静态标准::无序的\u集合使用\u ID;
身份证;
//Inits静态变量(本质上是一个加载函数)
静态void static_init()
{
std::ifstream静态变量;
静态变量打开(数据文件名称);
if(静态变量为开()
{//此程序以前运行过,请加载它
标识线;
//将文件的每一行读入已使用的\u ID(每行1个ID)
while(静态变量>>行)
{
使用的标识插入(行);
}
//现在,used_id的大小将是创建的对象数
objs_created=used_id.size();
//关闭文件
静态变量关闭();
}
其他的
{//文件不存在或已损坏
std::流mkFile;
mkFile.open(DATAFILE_NAME);//生成文件
mkFile.close();
//初始化静态变量
//无序_集不需要初始化
objs_created=0;
}
}
公众:
对象()
{
if(已使用\u id.empty())
{
对象::static_init();
}
id_t rand_num=0;
std::默认随机引擎随机生成器(std::时间(nullptr));
//随机数[0]的可能范围(无符号长的最大值)]
标准:统一分布号范围(0,最大ID);
反复设置一个随机数,直到在“used_id”中找不到为止
{
rand\u num=编号范围(rand\u生成器);
}while(used_id.find(rand_num)!=used_id.end());
//将m_id设置为随机数
m_id=rand_num;
//更新静态变量
使用的标识。插入(m标识);
objs_创建++;
}
//保存可以调用的函数
静态void save()常量
{
std::流存储数据;
saveData.open(数据文件名称);
if(saveData.is_open())
{
//将每个id保存在自己的行中
用于(常量自动和id:已使用的id)
{
saveData将其写入文件,并在启动程序时再次读取。我所做的是拥有私有静态nrOfObjects和公共静态getNrOfObjects,但它们仅在创建对象时计算,而不是真正分配唯一id。我是否还必须拥有单独的私有id,或者我创建的私有静态nrOfObjects才是实际的id?请指定作业的哪些部分有问题。如何在程序重新启动时使其持久化?如何在程序中实现唯一id?其他问题?请一次只关注一个主题,否则这个问题太广泛,可能会被关闭。请阅读,以及。请记住,您应该“总是可以向你的老师寻求帮助和澄清!”某个程序员说,“我不认为这个问题太模糊了。”他给出了一份他/她的作业的项目清单,并说他们在整个作业中遇到了问题。这意味着他们在提到的所有要点上都有问题。@DrakeJohnson每个问题一个问题。如何在程序内部处理唯一id是一个问题,应该在一个问题中提出,并且如何持久化唯一id是另一个问题,应该在单独的问题中提出。此外,还不清楚OP实际上在问什么问题(如何在程序内部处理它,或者如何持久化,或者两者都要问).Code只回答不幸的问题,这是不好的。@Someprogrammerdude代码中有很多注释。Cargo cult通常是人们不理解他们在程序中放了什么。不过,我理解你的担心,我愿意接受关于如何使我的答案更清楚的建议。