Est-il possible de lazy un sous-objet statique d'une classe?
-
27-10-2019 - |
Question
Y at-il un moyen d'initialisation d'un sous-objet statique d'une classe après principale () a commencé?
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