【发布时间】:2014-11-09 22:24:18
【问题描述】:
(我知道) 在 c++ 中,我 可以 declare variable 超出范围并且我不能运行任何代码/语句,除了用于初始化全局/静态变量。
想法
使用下面的棘手的代码来(例如)做一些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 :)
}
【问题讨论】:
-
你为什么要为那个函数创建类?
-
@Dawid 那是我的错!
-
“这是个好主意吗”听起来相当基于意见。此外,“什么更好”(查看答案,实际上就是这样)是一个列表问题。
-
每当您考虑“棘手的代码”时,您没有回答自己的问题吗?
标签: c++ static initialization initializer