¿Hay alguna forma de perezoso inicializar un subobjeto estático de una clase?
-
27-10-2019 - |
Pregunta
¿Hay alguna forma de inicializar un subobjeto estático de una clase después de que Main () haya comenzado?
Solución
Una forma de hacerlo es reemplazar los datos del miembro estático que funcionan el miembro estático.
Digamos que tienes esta clase:
class A
{
static B static_b; //static member data
};
//.cpp
B A::static_b; //definition (required)
Entonces, en lugar de eso, puede definir su clase como:
class A
{
static B static_b() //static member function!
{
static B b;
return b;
}
};
Tenga en cuenta que no es seguro de subprocesos, pero también puede hacerlo a sabor a los subprocesos.
Otros consejos
Puede usar un puntero para este objeto:
class SomeClass{
public:
static SomeOtherClass* p;
};
SomeOtherClass* SomeClass::p;
void main(){
SomeClass::p = new SomeOtherClass();
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow