AUTO GENERATE ID C ++

时间:2016-08-23 10:08:29

标签: c++

我正在尝试添加自动生成的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);
    }

2 个答案:

答案 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以获得简单示例。如果你能理解一个简单的例子,我认为你的理解会更好。