我想提出一個簡單的Random
類使用隨機類:以靜態方式
class Random
{
public:
static bool seeded = false;
static void SeedRandom(int number)
{
srand(number);
}
static int GetRandom(int low, int high)
{
if (!seeded)
{
srand ((int)time(NULL));
}
return (rand() % (high - low)) + low;
}
};
顯然C++不允許一整類被聲明爲static
(這是什麼使這很容易在C# )。我改爲讓所有成員爲static
。也沒有static
的構造函數,所以我沒有辦法初始化我的bool seeded
,除非我手動調用一個函數,這會破壞目的。我可以改爲使用一個常規的構造函數,在這個構造函數中我將不得不創建一個Random
的實例,我不想這樣做。
此外,有沒有人知道如果新的C++ 0x標準將允許靜態類和/或靜態構造函數?
你班裏的'bool seeded = false'位無效。只有靜態的** const ** intergal成員可以用這種方式在類的主體中初始化。您必須單獨聲明「種子」並在聲明點(而不是定義點)對其進行初始化。 – 2011-04-21 07:46:49