gpt4 book ai didi

c++ - 是否可以检查静态变量是否已在 C++ 中初始化?

转载 作者:太空宇宙 更新时间:2023-11-04 11:44:52 29 4
gpt4 key购买 nike

基于对这个问题的回答C++ static initialization order ,似乎无法直接控制静态初始化的顺序。但是,假设我要在构造函数内为静态初始化对象 foo 显式初始化静态变量,该对象依赖于不同的全局对象 bar。有没有办法让 foo 的构造函数在调用时确定 bar 是否已经静态初始化?

也就是说,假设我有一个编译单元。

Foo::Foo() {
// Can I check here whether bar has already been initialized?

// do something that needs bar to be initialized
// If bar has not been initialized, then I will crash and burn.
}

// statically initialized foo
Foo foo;

在不同的编译单元中:

Bar bar;

目标是确保 barfoo 的(静态调用的)构造函数运行到需要 bar 的位置之前被初始化>。我们可以在 foo 的构造函数中显式地启动 bar,但是我们需要知道 bar 是否已经被初始化。

最佳答案

不,这是不可能的,但如果您想了解如何实现始终在使用前初始化的东西,请查看 std::cout

的实现

关于c++ - 是否可以检查静态变量是否已在 C++ 中初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20134874/

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