почему конструктор 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, используя тот же способ, он мог бы быть инициализирован. но конструктор класса не называется, очень странно.
есть ли ошибка в моем коде?