Есть ли способ ленивого инициализации статического подраздела класса?
-
27-10-2019 - |
Вопрос
Есть ли способ инициализации статического подраздела класса после начала 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();
}
Не связан с StackOverflow