(我知道)在C++中,我可以在作用域之外声明变量
,但除了初始化全局/静态变量外,我无法运行任何代码/语句。
想法
使用下面的巧妙代码(例如)进行一些std::map
操作是否是一个好主意?
在这里,我使用void *fakeVar
并通过Fake::initializer()
进行初始化,并且在其中做任何我想要的事情!
std::map<std::string, int> myMap;
class Fake
{
public:
static void* initializer()
{
myMap["test"]=222;
// Do whatever with your global Variables
return NULL;
}
};
// myMap["Error"] = 111; => Error
// Fake::initializer(); => Error
void *fakeVar = Fake::initializer(); //=> OK
void main()
{
std::cout<<"Map size: " << myMap.size() << std::endl; // Show myMap has initialized correctly :)
}