почему конструктор c ++ не был вызван, когда он появляется как статическая переменная-член?

У меня была странная проблема,

объявить статическую переменную-член, имя которой 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);
};

И в другомCPP файл, который я инициализирую

Test TsdNAExtPersonality::test;

Я пытался несколькими способами, но я обнаружил, что все способы бесполезны.

не устанавливал переменную как переменную-член, но как глобальная переменная ==> также не может выводитьизмените переменную-член в качестве указателя и измените способ инициализации, используя новый ==> нет

среда - HP-UX, а компиляция - aCC

так что мой вопрос:

есть ли опция компиляции, повлияет на переменную? другими словами, все статические переменные не будут инициализированы.

из стандарта C ++ он должен вызываться при загрузке библиотеки, верно?

Я поставил другое статическое значение типа int, используя тот же способ, он мог бы быть инициализирован. но конструктор класса не называется, очень странно.

есть ли ошибка в моем коде?

Ответы на вопрос(4)

Ваш ответ на вопрос