我有一个奇怪的问题,
声明一个静态成员变量,其名称为A类中的B类。并在cpp文件中初始化。但是从未调用过B类的构造函数。我尝试使用一些小型测试,可以正常调用测试构造函数。所以这对于我们的生产系统来说很奇怪。
在hpp中这样的代码:
class Test
{
public:
Test()
{
ofstream file("/tmp/wup.txt",ios::app);
file << "wup in test" << endl;
file.close();
}
};
//## An extended personality
class TsdNAExtPersonality : public TsdNAPersonality{
public:
TsdNAExtPersonality(
s_gg62_personRec * gg62Header,
TsdNAFunctionType requiredFunctionType);
private:
static Test test;
public:
TsdNAExtPersonality( string * personalityFile, TsdNAFunctionType requiredFunctionType);
};
Run Code Online (Sandbox Code Playgroud)
在另一个cpp文件中,我使用
Test TsdNAExtPersonality::test;
Run Code Online (Sandbox Code Playgroud)
我尝试了几种方法,但是我发现所有方法都没有用。
环境是HP-UX,编译是aCC
所以我的问题是:
是否有任何编译选项会影响变量?换句话说,所有静态变量都不会被初始化。
从C ++标准开始,应该在加载库时调用它,对吗?
我使用相同的方式放置了另一个静态int值,可以对其进行初始化。但是类的构造函数没有被调用,很奇怪。
我的代码有什么错误吗?