Question

Y at-il un moyen d'initialisation d'un sous-objet statique d'une classe après principale () a commencé?

Était-ce utile?

La solution

Une façon de faire qui consiste à remplacer les données de l'élément statique dont la fonction membre statique.

Dites que vous avez cette classe:

class A
{
   static B static_b; //static member data
};

//.cpp
B A::static_b; //definition (required)

Ainsi, au lieu de cela, vous pouvez définir votre classe comme:

class A
{
   static B static_b()  //static member function!
   {
       static B b;
       return b;
   }
};

Notez qu'il n'est pas thread-safe, mais vous pouvez le rendre thread-safe ainsi.

Autres conseils

Vous pouvez utiliser un pointeur pour cet objet:

class SomeClass{
public:
    static SomeOtherClass* p;
};

SomeOtherClass* SomeClass::p;    

void main(){
    SomeClass::p = new SomeOtherClass();
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top