gpt4 book ai didi

C++ 全局变量的后期实例化

转载 作者:行者123 更新时间:2023-12-02 09:00:51 24 4
gpt4 key购买 nike

我有一些代码,必须通过相当多的代码来设置全局资源:

globalClass foo;  // global variable / object; give it a memory space to live

void doSomething( void )
{
foo.bar(); // use the global foo object
}

int main( int argc, const char *argv[] )
{
foo( argc ); // foo can only be instantiated in main as it's using
// information that's only available here

doSomething(); // use the global foo object

return 0;
}

如您所见,foo 具有全局范围 - 但要调用其构造函数,我需要一些仅在 main 内部可用的信息。

我怎样才能实现这一目标?

我能想到的唯一解决方案是使 foo 成为指向 globalClass 的指针 - 但这会导致每次我使用 时指针取消引用foo.当在紧密循环中使用时,这可能会产生性能问题...

PS:在真实的程序中,maindoSomething 会存在于不同的文件中。当然,可以保证 foo 在实例化之前不会被访问。

最佳答案

foo 作为函数内的 static 变量怎么样?这样,它仅在调用函数时才会被实例化:

globalClass& getThing()
{
static globalClass thing;
return thing;
}

void doSomething(const globalClass& thing);

int main()
{
const globalClass& x = getThing();
doSomething(x);
}

关于C++ 全局变量的后期实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13664945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com