gpt4 book ai didi

c++ - 在 main() 之前强制在 C++ 中初始化单例

转载 作者:搜寻专家 更新时间:2023-10-31 02:00:11 25 4
gpt4 key购买 nike

我正在使用单例,如下所示:

// Foo.hpp
class Foo {
static Foo* instance() {
static Foo* foo = new Foo();
return foo;
}
}

现在,我的单例在第一次调用 Foo::instance() 时被初始化。我想确保这是在 main 执行之前(我的代码是多线程的,我希望在创建 pThread 之前初始化所有单例)。

问题是:

我可以在 Foo.hpp 中放入什么来实现上述情况吗? (我不想要一个通用的 Globals.hpp taht 初始化所有单例;我也宁愿不必触及 Foo.cpp)。

谢谢!

最佳答案

在Foo(private: static Foo singleton;)中存储一个全局的'Foo'实例,并在某处定义它(最好是Foo.cpp,不幸的是需要触及)。这将在 main() 运行之前初始化对象 - 但静态初始化的顺序在多个单元中未定义。

是什么阻止你这样做? :

int main() {

Foo::init();
bar::init();

LaunchAllMyThreads();
}

关于c++ - 在 main() 之前强制在 C++ 中初始化单例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307895/

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