Здравствуйте, Sheridan, Вы писали:
S>Так и продолжает валиться на cmainwindow->show();
Будешь смеяться, но... Как бы я его не пытал (debug, release), сколько qDebug не убирал — не падает.
Компилировал под Mingw-gcc 4.4.0 (из поставки Qt), моя версия Qt: 4.6.0, система — WinXP SP2, напичканная обновлениями под завязку.
AF>По-идее, приватные переменные уже не глобальное пространство имён и работать должно. Хотя так я, на всякий случай, не делаю
И правильно, не знаю как с этим у GCC дела, но при использовании имён с подчеркиваниями у полей классов в VisualStudio 2008 SP1 и студиях до неё,я периодически получал Internal Linker Error вплоть до ошибок генерации кода и вылетания непонятных исключений на ровных местах.
Здравствуйте, Alexey F, Вы писали:
AF>Здравствуйте, Sheridan, Вы писали:
S>>Так и продолжает валиться на cmainwindow->show(); AF>Будешь смеяться, но... Как бы я его не пытал (debug, release), сколько qDebug не убирал — не падает. AF>Компилировал под Mingw-gcc 4.4.0 (из поставки Qt), моя версия Qt: 4.6.0, система — WinXP SP2, напичканная обновлениями под завязку.
Неужели Linux sucks (C)?
Дело в том, что с нуля записываются числа в восьмеричной системе счисления. wtPassenger (8) и wtBullet (9) должны дать ошибку компиляции. А 010 == 8.
QApplication уже имеет метод instance, который позволяет обратиться к нему из любой части программы (см. также qApp). Его (CApplication) можно смело убрать из singleton'а. Я к чему это всё — меня не покидает ощущение, что глюк растёт откуда-то из этих мест. Можно попробовать убрать наследование от QApplication, создавать его на стеке в main. С такими странностями (я о том, что в моём случае он запускается без краха), ИМХО, можно упрощать код до тех пор, пока программа не перестанет падать.
Я попытался сам это сделать, причём рубанул с плеча весь CSingleTone, да потом как-то завяз в зависимостях и макросах...
Приветствую, Alexey F, вы писали:
AF> Будешь смеяться, но... Как бы я его не пытал (debug, release), сколько qDebug не убирал — не падает. AF> Компилировал под Mingw-gcc 4.4.0 (из поставки Qt), моя версия Qt: 4.6.0, система — WinXP SP2, напичканная обновлениями под завязку.
тщьорт...
У меня на мощном компе кстати тоже не падает, а на нетбуке рушится....
Ну в любом случае спасибо
Кстати, вопрос. Ты не знаешь, синглтон на указателях на функции (как я реализовал сейчас) будет быстрее\медленнее того что закомментирован?
Здравствуйте, Sheridan, Вы писали:
S>У меня на мощном компе кстати тоже не падает, а на нетбуке рушится....
На своём нетбуке проверил — там WinXP SP3 — не падает. В *nix возможности проверить нет, так как в них я дуб дубом...
S>Кстати, вопрос. Ты не знаешь, синглтон на указателях на функции (как я реализовал сейчас) будет быстрее\медленнее того что закомментирован?
Если честно, я понял, что делает код на указателях только после того, как прогнал его через g++ -E (посмотрел вывод препроцессора)
Я бы не сказал, что это вообще ощутимо должно повлиять на производительность. Не миллиарды раз же они будут вызываться?
Но по-идее, через указатели должно быть медленнее.
Сейчас профайлером посмотрю на таком коде:
// 9.cppint main () {
// Плохой стиль, но мне лень сейчас лишний .h делать :)void ifVersionTest ();
void ptrVersionTest ();
ifVersionTest ();
ptrVersionTest ();
}
Здравствуйте, Sheridan, Вы писали:
S> Тут лежит. Собственно это сам проект, я его потом всеравно куда-ть на sf дену... S> Так и продолжает валиться на cmainwindow->show();
$ make
make: *** Нет правила для сборки цели `/usr/share/qt4/mkspecs/linux-g++/qmake.conf', требуемой для `Makefile'. Останов.
$ qmake x3complex.pro
$ make
...
In file included from src/ui/cmainwindow.cpp:2:
build/x3complex/ui/ui_cmainwindow.h: In member function ‘void Ui_CMainWindow::setupUi(QMainWindow*)’:
build/x3complex/ui/ui_cmainwindow.h:121: ошибка: ‘class QMenuBar’ has no member named ‘setNativeMenuBar’
make[1]: *** [build/x3complex/obj/cmainwindow.o] Ошибка 1
make[1]: Leaving directory `/home/abbat/projects/x3complex'
make: *** [release] Ошибка 2
Qt version 4.5.2 (на 4.6 в моем дистрибе еще пока не обновили, а руками компилить лениво).
Не падает:
Qt-4.6.0
gcc version 3.4.5
Linux 2.6.15.2 #3 SMP Mon Oct 9 17:29:06 MSD 2006 i686 pentium4 i386 GNU/Linux
Qt-4.5.0, 4.3.3 не собирает:
In file included from src/ui/cmainwindow.cpp:2:
build/x3complex/ui/ui_cmainwindow.h: In member function `void Ui_CMainWindow::setupUi(QMainWindow*)':
build/x3complex/ui/ui_cmainwindow.h:121: error: 'class QMenuBar' has no member named 'setNativeMenuBar'
Приветствую, shadone, вы писали:
s> классическая ошибка. в качестве первого аргумента QApplication принимает _ссылку_ на argc и сохраняет ее внутри. s> QApplication::QApplication ( int & argc, char ** argv ) s> http://doc.qt.nokia.com/4.6/qapplication.html#QApplication
Здравствуйте, Sheridan, Вы писали:
S>Приветствую, Alexey F, вы писали:
AF>> Скажу сразу — подчёркивания, тем более двойные в начале идентификатора (да ещё какого — макроса!) — зарезервированы для компилятора (как минимум в глобальной области видимости; в форуме C/C++ это неоднократно обсуждалось). Причина, конечно, не в этом, но предупредить я должен. S>Из макросов убрал, а для классов я привык приватные переменные префиксировать подчеркиванием....
Значит, надо поскорее отвыкнуть
И привыкнуть к чему-нибудь другому, например, к суффиксу: member_; или префиксу с буквой: m_member.