我正在製作一個C++應用程序來存儲有關產品的數據,每個產品都有一個唯一的整數ID,有沒有辦法做到這一點?爲每個節點定義一個唯一的整數
我已經爲產品這類節點,但我不知道如何使ID唯一:
class Node{
public:
int ID;
int cost;
int quantity;
string Name;
Node(){ID=0; cost=0;quantity=0; Name="";}
};
我正在製作一個C++應用程序來存儲有關產品的數據,每個產品都有一個唯一的整數ID,有沒有辦法做到這一點?爲每個節點定義一個唯一的整數
我已經爲產品這類節點,但我不知道如何使ID唯一:
class Node{
public:
int ID;
int cost;
int quantity;
string Name;
Node(){ID=0; cost=0;quantity=0; Name="";}
};
使用一個靜態變量:
Node(){
static int id = 0;
ID=id;
id++;
cost=0;
quantity=0;
Name="";}
而且,我會用而不是int
。
另一種想法: 爲了使代碼具有持久性和線程安全性,每次創建節點時都會在文件上寫入最後一個ID。當程序啓動時,該文件將在另一個singleton
類的構造函數中首先被讀取。最後,這個類將保護用互斥鎖生成ID的方法。
有幾種方法可以做到這一點。一種方法就是在您的類所在的頭文件中有一個全局變量,用於定義ID,並在分配每個ID之後遞增。但是,許多人儘可能少地使用全局變量 - 當你不期待它們時,它們很容易被修改。
更好的方法是創建一個不同的類(我們稱之爲NodeManager
),它有一個跟蹤當前ID的成員變量,每次請求一個新的ID時遞增成員變量,並且必須傳遞進入構造函數Node
。
稍微更簡潔一些的方法也可以避免全局變量,那就是使用靜態變量。靜態變量在類的所有實例中都是相同的,因此您可以使用它來跟蹤當前的ID。
不確定問題在問什麼。你是否在尋求生成獨特ID的方法?如果是這樣,這是一個單一的機器應用程序,還是你需要生成多個機器上唯一的整數?這些ID是否需要是整數? ID需要支持哪些其他屬性?你問是否有辦法告訴C++(通過類型系統)該ID需要對每個對象唯一嗎? – Rajiv