Один из способов сделать это - заменить данные статического члена функцией статического члена.
Скажем, у вас есть этот класс:
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;
}
};
Обратите внимание, что он не является потокобезопасным, но вы также можете сделать его потокобезопасным.