第 1 部分:我有一个非常奇怪的情况,在这种情况下,我必须在 main() 之前或在它进入 main() 时立即调用几个类的构造函数。还有另一个子系统需要该数据尽快启动这个子系统的 main() 和更多的东西,这使得这个概念看起来更有用。
我在这里有两种方法:
在 main() 之前使用全局对象。
在 main() 的第一行中使用静态类定义。
另一个想法是(因为我使用 gcc)是使用attribute __constructor__
gcc 保留功能。
你有什么建议?
第 2 部分:为了进一步解决这个问题,我需要解耦这些类的开发。(这更像是一个代码库设计问题。)
也就是说,如果有人正在编写classA而其他人正在编写classB,那么我们将拥有两个单独的文件,分别是classA和classB,在他们的 files/modules 中定义并调用他们自己的构造函数。
这是一个示例代码,说明了我的想法:
class Init_myclass
{
public:
Init_myclass(): myvar(10)
{
std::cout << __PRETTY_FUNCTION__ << ":" << myvar << std::endl;
};
private:
int myvar;
};
static Init_myclass TestInit; //Initializing object prior to main
int main ()
{
std::cout << __PRETTY_FUNCTION__ << std::endl;
//Use the data populated by the Init_myclass constructor
return 0;
}
在上面的代码中,将Init_myclass替换为 100 个类定义,如classA、classB等。
另一种方法是使用文件中的单个构造函数从内部调用其他文件中定义的多个类构造函数。
这是可以帮助您理解我的想法的示例代码:
class InitializeOne
{
public:
InitializeOne(): myvar(10)
{
std::cout << __PRETTY_FUNCTION__ << ":" << myvar << std::endl;
A bunch of constructors of other classes here();
classA();
classB();
....
};
private:
int myvar;
};
int main()
{
static InitializeOne TestInit;//Object after main
... //functions depending on data populated by Initialize constructor
}
类的初始化顺序无关紧要,但它们必须在 main 之前或进入 main 时立即初始化。
哪种设计更可取,为什么?
我希望,我让我的问题可以理解。如果没有,请告诉我,我遗漏了哪些信息或过于简单/复杂等。
感谢您的回复和时间。