C ++在main函数中初始化静态变量

时间:2018-04-12 17:41:41

标签: c++ variables constructor global-variables

$ echo manual | sudo tee /etc/init/docker.override
chkconfig

$ sudo chkconfig docker on

我需要在调用glewInit()函数后调用构造函数 它的构造函数正在使用gl函数

我可以阻止C ++初始化'a'变量,如果是,怎么做?

2 个答案:

答案 0 :(得分:5)

将函数与静态变量一起使用:

A &getA() 
{
    static A a;
    return a;
}

并仅在可以创建时访问它。

答案 1 :(得分:0)

如果创建仅依赖于全局状态,那么Slava的答案是很好的,但是如果你需要计算一些构造函数参数,最好的办法是组合一个局部变量(因为它在main()中它会存活到程序结束)和指向它的指针:

static A* a;

int main()
{
    /* some code that determines arg1 and arg2 */

    A real_a(arg1, arg2);
    a = &real_a;

    /* call all the functions that use ::a */
}