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 ==> no

o 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?

questionAnswers(4)

yourAnswerToTheQuestion