Les membres statiques me confondent parfois. Je comprends comment initialiser simple type construit tel que int
avec quelque chose le long des lignes de int myClass::statVar = 10;
, que vous placez dans un fichier .cpp, mais j'ai quelque chose du genre suivant:Initialisation des membres statiques de l'objet
class myClass
{
public:
// Some methods...
protected:
static RandomGenerator itsGenerator;
}
L'idée de base est Assez simple: myClass
a besoin d'accéder à un générateur aléatoire pour l'une de ses fonctions membres. Je peux aussi avoir seulement quelques instances du générateur puisque chaque objet est assez grand. Cependant, le type RandomGenerator
doit être "initialisé", pour ainsi dire, par un appel à RandomGenerator::Randomize()
, ce que le compilateur ne vous permettra pas de faire puisqu'il ne s'agit pas d'une valeur constante (n'est-ce pas?).
Alors, comment puis-je faire ce travail?
Ou peut-être ne devrais-je pas utiliser une variable statique dans ce cas, et le faire d'une autre manière?
Il est mauvais. La classe externe ne devrait pas connaître l'existence du générateur. Vous avez changé le chemin pour cela seulement. C'est une solution de contournement, mais ce n'est pas une solution. – Gangnus
@Gangnus: Pas nécessairement. L'encapsulation est très bien, mais il n'y a rien de mal à fournir des politiques de l'extérieur, surtout si vous risquez de perdre plus qu'une seule responsabilité dans votre classe externe existante. –