我正在制作一个c ++应用程序来存储有关产品的数据,每个产品都有一个唯一的整数ID,有没有办法做到这一点?
我为产品创建了这个类Node,但我不知道如何使ID唯一:
class Node{
public:
int ID;
int cost;
int quantity;
string Name;
Node(){ID=0; cost=0;quantity=0; Name="";}
};
答案 0 :(得分:1)
使用静态变量:
Node(){
static int id = 0;
ID=id;
id++;
cost=0;
quantity=0;
Name="";}
另外,我会使用unsigned int
代替int
。
另一个想法:
为了使代码具有持久性和线程安全性,我会在每次创建节点时在文件上写入最后一个ID。程序启动时,在另一个singleton
类的构造函数中,将首先读取该文件。最后,这个类将保护使用互斥锁生成ID的方法。
答案 1 :(得分:1)
有几种方法可以做到这一点。一种方法是在类所在的头文件中有一个全局变量,用于定义ID,并在分配每个ID后递增。然而,许多人试图尽可能少地使用全局变量 - 当你不期望它们时,它们太容易被修改。
更好的方法可能是创建一个不同的类(让它称之为NodeManager
),它有一个跟踪当前ID的成员变量,每次新ID时都会增加成员变量请求,并且必须传递给Node
的构造函数。
一种稍微更简洁的方法,也可以避免全局变量使用静态变量。静态变量在类的所有实例中都是相同的,因此您可以使用它来跟踪当前ID。