por que o construtor c ++ não foi chamado quando aparece como a variável de membro estático?
Eu tive um problema estranho
declare uma variável de membro estática cujo nome é classe B na classe A. E inicialize no arquivo cpp. mas o construtor da classe B nunca foi chamado. Eu tento usar algum teste pequeno, o construtor de teste pode ser chamado normalmente. por isso é muito estranho para o nosso sistema de produção.
O código como este, emhpp:
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);
};
E em outrocpp arquivo inicializado com
Test TsdNAExtPersonality::test;
Eu tentei de várias maneiras, mas achei que todas as maneiras são inúteis.
não definiu a variável como variável de membro, mas como variável global ==> também não pode gerar saídaaltere a variável de membro como ponteiro e altere a maneira de inicializar usando new ==> noo ambiente é o HP-UX e a compilação é aCC
então minha pergunta é:
existe alguma opção de compilação influenciará a variável? em outras palavras, toda a variável estática não será inicializada.
do padrão de C ++, ele deveria ser chamado quando a biblioteca estava carregada, certo?
Eu coloquei outro valor int estático da mesma maneira, ele poderia ser inicializado. mas o construtor de classe não é chamado, muito estranho.
existe algum erro no meu código?