C'è un modo per inizializzare un soggetto statico di una classe?
-
27-10-2019 - |
Domanda
Esiste un modo per inizializzare un sotto-oggetto statico di una classe dopo main ()?
Soluzione
Un modo per farlo è sostituire i dati dei membri statici con la funzione dei membri statici.
Dì che hai questa classe:
class A
{
static B static_b; //static member data
};
//.cpp
B A::static_b; //definition (required)
Quindi, invece di poter definire la tua classe come:
class A
{
static B static_b() //static member function!
{
static B b;
return b;
}
};
Nota che non è thread-safe, ma puoi anche farlo da thread-safe.
Altri suggerimenti
Puoi usare un puntatore per questo oggetto:
class SomeClass{
public:
static SomeOtherClass* p;
};
SomeOtherClass* SomeClass::p;
void main(){
SomeClass::p = new SomeOtherClass();
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow