Есть ли способ ленивого инициализации статического подраздела класса?

StackOverflow https://stackoverflow.com/questions/9349048

Вопрос

Есть ли способ инициализации статического подраздела класса после начала Main ()?

Это было полезно?

Решение

Один из способов сделать это - заменить статические данные члена, которые функция статического элемента.

Скажи, что у тебя этот класс:

class A
{
   static B static_b; //static member data
};

//.cpp
B A::static_b; //definition (required)

Таким образом, вместо этого вы можете определить свой класс как:

class A
{
   static B static_b()  //static member function!
   {
       static B b;
       return b;
   }
};

Обратите внимание, что это не безопасно, но вы также можете сделать его безопасным.

Другие советы

Вы можете использовать указатель для этого объекта:

class SomeClass{
public:
    static SomeOtherClass* p;
};

SomeOtherClass* SomeClass::p;    

void main(){
    SomeClass::p = new SomeOtherClass();
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top