Je fais une Random
classe simple:Utilisation d'une classe aléatoire d'une manière statique
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;
}
};
Il est évident que C++ ne permet pas une classe entière à être déclarée comme static
(qui est ce qui rend ce si facile en C#). J'ai plutôt fait tous les membres comme static
. Il n'y a pas non plus de constructeur static
donc je n'ai aucun moyen d'initialiser mon bool seeded
sauf si j'appelle une fonction à la main, ce qui va à l'encontre du but. Je peux utiliser un constructeur normal dans lequel je devrais créer une instance de Random
, ce que je ne veux pas faire.
Est-ce que quelqu'un sait si le nouveau standard C++ 0x autorisera des classes statiques et/ou des constructeurs statiques?
Le bit 'bool seeded = false' de votre classe n'est pas valide. Seuls les membres intergal ** const ** statiques peuvent être initialisés dans le corps d'une classe de cette façon. Vous devez déclarer 'seeded' séparément et l'initialiser au point de déclaration (plutôt qu'au point de définition). –