Frage

Gibt es eine Möglichkeit, ein statisches Unterobjekt einer Klasse zu initialisieren, nachdem Main () begonnen hat?

War es hilfreich?

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
scroll top