Gibt es eine Möglichkeit, ein statisches Unterobjekt einer Klasse zu initialisieren?
-
27-10-2019 - |
Frage
Gibt es eine Möglichkeit, ein statisches Unterobjekt einer Klasse zu initialisieren, nachdem Main () begonnen hat?
Lösung
Eine Möglichkeit, dies zu tun, besteht darin, die statischen Mitgliedsdaten zu ersetzen, die statische Mitgliedsfunktionen.
Sagen Sie, Sie haben diese Klasse:
class A
{
static B static_b; //static member data
};
//.cpp
B A::static_b; //definition (required)
Anstelle dessen können Sie Ihre Klasse als:
class A
{
static B static_b() //static member function!
{
static B b;
return b;
}
};
Beachten Sie, dass es nicht threadssicher ist, aber Sie können es auch mit Thread-Safe erstellen.
Andere Tipps
Sie können einen Zeiger für dieses Objekt verwenden:
class SomeClass{
public:
static SomeOtherClass* p;
};
SomeOtherClass* SomeClass::p;
void main(){
SomeClass::p = new SomeOtherClass();
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow