我想确保在输入main()之前从未实例化我的C++类.有没有办法实现这个目标?
-
一些澄清:
我正在编写嵌入式应用程序.我的类必须是静态的(驻留在BSS中),但是在实例化时,它需要一些在main()开始时初始化某些东西之前不可用的资源.所以我想把它变成迈耶斯单身人士.理想情况下,我想做一些断言,确保在main()之前永远不会调用MyClass :: instance().
在某种方法被调用之前限制类的构造将是一场失败的战斗.特别是如果那种方法main().我可以问你为什么要这个要求?也许还有另一种方法来解决你试图解决的实际问题.
编辑:感谢CTQ,并从中判断你最好的选择可能是最简单的解决方案,这是一个静态布尔值.由于它是嵌入式的,我将假设您几乎控制整个环境.::instance()基于静态bool的简单断言可能就是你所需要的.
更进一步,听起来你需要依赖注入或其他一些方法来确保你的资源以正确的顺序初始化,我会说实话,这不是我在C++中解决的问题(更不用说嵌入式系统).我不能对这种情况下最有效的方法给出任何额外的见解,并建议你考虑这个问题的其他答案之一.