我有一个微控制器 C++ 项目,我在其中全局声明尽可能多的内容,而不是新建对象。事实上,我没有在任何地方使用
new
关键字。
我现在遇到了
__libc_init_array
的顺序给我带来问题的情况。我希望我能很好地解释我的情况,以便有人指出我是否做错了什么,或者我是否可以控制手头的问题。
我有很多类,其中的依赖项是通过构造函数注入的。这些对象是在启动代码调用
__libc_init_array
时构造的。我现在遇到一种情况,在调用类 B
的构造函数之前调用类 A
的构造函数,而 B
依赖于 A
。因此,当 B
的构造函数使用“未初始化”A
的任何成员时,应用程序会出现硬故障。
有没有办法强制
__libc_init_array
调用的构造函数的顺序?或者我是否因为这种行为犯了一个可怕的错误?或者...在 C++ 中一起使用构造函数中的依赖项成员是一个坏主意吗?
我意识到当我对所有对象进行
new
时,我可以100%控制这种行为构造顺序,但重构它需要相当多的工作。
现在,我为依赖顺序有问题的单一情况添加了一个
initialize
函数,它解决了问题,但感觉也不是合适的解决方案。
我尝试用谷歌搜索更好的解决方案,但不断提出不相关的问题。