I had a strange problem ,
declare a static member variable whose name is B class in A class . And initialize in the cpp file. but the constructor of B class was never called. I try to use some small test , the test constructor could be called normally. so it is very strange for our production system.
The code like this , in 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);
};
And in another cpp file I initialize with
Test TsdNAExtPersonality::test;
I have tried in several way, but i found all of ways are unusefull.
- did not set the variable as member variable but as global variable ==> also can't output
- change the member variable as pointer and change the initialize way as using new ==> no
the environment is HP-UX ,and the compile is aCC
so my question are :
is there any compile option will influence the variable ? in other words, all the static variable will not be initialized.
from the standard of C++ it should be called when the library was load, right?
I put another static int value using the same way, it could be initialized. but the class constructor is not called , very strange.
is there any mistake in my code ?