为每个节点定义唯一的整数

时间:2013-12-09 18:16:18

标签: c++

我正在制作一个c ++应用程序来存储有关产品的数据,每个产品都有一个唯一的整数ID,有没有办法做到这一点?

我为产品创建了这个类Node,但我不知道如何使ID唯一:

class Node{
public:
    int ID;
    int cost;
    int quantity;
    string Name;

Node(){ID=0; cost=0;quantity=0; Name="";}

};

2 个答案:

答案 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。