我正在尝试添加自动生成的ID以添加学生。
所以这些是我的问题:
ID_NUM
都是一样的。 id_num
+ 1。但我不知道该怎么做。 :(
class moon
{
int id_num;
char name[100];
char course[100];
public:
void add;
}
void alt();
void alt()
{
system("cls");
char a;
moon min;
ofstream nimp;
nimp.open("moon.dat",ios::binary|ios::app);
min.add();
nimp.write(reinterpret_cast <char *> (&min), sizeof(moon));
cin.ignore();
cin.get();
heal.close();
id_num++;
}
void moon::add()
{
cout<<"ID NUMBER: "<<id_num<<endl;
cin.ignore();
cout<<"Enter course: ";
gets(course);
cout<<"Enter name: ";
gets(name);
}
答案 0 :(得分:1)
以这种方式:
#include <fstream>
#include <iostream>
struct id_generator
{
id_generator()
: _id (0)
{
std::ifstream ifs("previous_id.txt");
ifs >> _id;
}
~id_generator()
{
std::ofstream ofs("previous_id.txt", std::ios_base::out | std::ios_base::trunc);
ofs << _id;
}
int operator()() { return _id++; }
int _id;
};
int main()
{
id_generator idgen;
std::cout << "next id is: " << idgen() << std::endl;
std::cout << "next id is: " << idgen() << std::endl;
return 0;
}
使用示例:
$ c++ -o idgen idgen.cpp
$ idgen
next id is: 0
next id is: 1
$ idgen
next id is: 2
next id is: 3
答案 1 :(得分:0)
首先,您的代码示例中存在许多失败。我希望这是复制的结果。
您无法在id_num++;
中执行此操作void alt()
,因为这不是moon
的成员方法,而id_num
是此类的私有成员。
您应该为id_num
变量使用static。您可以查看here以获得简单示例。如果你能理解一个简单的例子,我认为你的理解会更好。