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


// I need to have access to 'a' in whole file
// I cannot call constructor now
static A a;
int main()
{
    /*
        some code
    */
    glewInit();
    /*
        some more code
    */
    a = A(); 
}

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

我可以阻止C++初始化"a"变量吗?如果是,如何?

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

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

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

如果创建仅依赖于全局状态,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 */
}

相关内容

  • 没有找到相关文章

最新更新