LINUX.ORG.RU

Вызов конструктора


0

0

Доброго времени суток!

Подскажите, что может быть!

Была Слака 10.1, на ней был проект на С++, использующий wxWidgets и в частности класс wxStyledTextCtrl - a wrapper around the Scintilla styled text edit control.

Обновился до слаки 10.2 - проект начал падать при вызове конструктора класса wxStyledTextCtrl. Начал разбираться (благо исходники под руой ;-) ) и обнаружилось в от что, в исходниках Scintill'ы есть примерно такой код
Document *pdoc;
...
pdoc = new Document();
pdoc->AddWatchers(this, 0);
...
Класс Document - класс Scintill'ы,
так вот ошибка в член-функции AddWatchers класса Document, и как оказалось член-данные класса Document не инициализированы (инициализированны мусором).

В конструктор класса Document добавил для отдладки
cout << "Document::Document" << endl;. Пересобрал wxWidgets. Установил. Пересобрал свой проект.

В член-функцию AddWatchers для отладки добавил
cout << "Document::AddWatchers" << endl;

...и при запуске моего проекта строка Document::Document не выводится в консоль...
а Document::AddWatchers - выводится...

это что значит, конструктор класса Document не вызывается?

в теле функции AddWatchers добавил вывод член-данных класса Document в консоль, посмотрел, инициализированы мусором...

Однако, если скомпилировать пример, использующий wxStyledTextCtrl (идёт вместе с wxWidgets) то строка Document::Document выводится, следовательно конструктор вызывается
за ней выводится в косоль Document::AddWatchers,
все член-данные класса Document инициализированны как надо и пример работает...

Может кто сталкивался с таким поведением?

З.Ы.
Прошу извинить за поток сознания...



в gdb поставить breakpoint на pdoc = new Document(); потом смотреть по шагам

Reset ★★★★★
()

Надо убедиться сначала, что проект правильно линкуется и при запуске загружает правильные библиотеки wx (проверить свои makefile и сравнить выдачу ldd на своем бинарике с выдачей ldd на упомянутом примере от wx). Симптоматика такая, как если бы твой проект при запуске цеплял старый wx, или линковался с неправильным wx, или при компиляции проекта заголовки wx, которые цепляет компилятор, не соответствуют библиотекам, которые потом линкуются.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.