![]() |
|
![]() ![]() ![]() |
|
pycha |
|
||||||||||||||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
драствуйте . Прога состоит из 5 файлов. 3 cpp и 2 заглавочных. Чтобы было понятно вот код.
main.cpp
analiz.h
analiz.cpp
analize.h
analize.cpp
в файле analiz.cpp при попытке вызвать функцию static QString Analize::analize(QString)
выдает ошибку
но почему же? ведь она же должна быть доступна во всех файлах програмы если у нее стоит "static". я понять немогу, может подскажете что не так --------------------
ищу хакера со знанием компьютера длятехкт |
||||||||||||||
|
|||||||||||||||
SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
static = private для модулей файлов. Тебе нужен extern в модуле где ты её объявляешь и static там где ты её будешь использовать. |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 2 Всего: 154 |
||||
|
||||
pycha |
|
||||||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
я чет не пойму как надо правильно, сделал так: добавил extern в analize.h (там где обьявляется функция),
и добавил еще одно обьявление функции там где они будут использоватся : analiz.cpp
в результате опять куча ошибок
Это сообщение отредактировал(а) pycha - 12.7.2009, 12:26 --------------------
ищу хакера со знанием компьютера длятехкт |
||||||
|
|||||||
pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
вот что в книге - учебнике (Стивен Прата) по этому поводу:
что собственно я и сделал, но оно почемуто не работает. компилятор у мя - еклипс. MinGW. Кто что посоветует? --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 2 Всего: 154 |
pycha, код выглядит нормальным, попробуй разместить все в одном файле
дело точно не в синтаксисе |
|||
|
||||
KL7 |
|
||||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
у меня такой код откомпилился (убрал зависимость от ui, поскольку им не обладаю
![]() Analiz.cpp
Analiz.h
Analize.cpp
Analize.h
main.cpp
Фактически статик-функция вызывается без проблем в конструкторе MainWindow... Про static и exern в плане компоновки - ето думаю другой вопрос... Тут же мы подключаем analize.h и спокойно пользуемся как классом, так и его статик-функциями... ![]() Мое упрощение кода не должно было повлиять на ситуацию, хотя ошибку Вы ведь не сами придумали... Даже не знаю в чем дело... |
||||||||||
|
|||||||||||
pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
мне надо чтобы оно было использовано в отдельных файлах , потомучто исходники analize.h analize.cpp я буду использовать в нескольких прогах, и конешно нехотелось бы просто копировать из исходников одной програмы все определение класа, а делать более цивилизовано, а оно чета ругается. Странно , ведь если брать стандатртные кутешные , например QString::number(int); то оно отлично работает, а вот почему из моего не хочет подключать?
вообщем тут чтото нелады с подключением файлов к проекту, заметил что в файлах analize.h analize.cpp если сделать ее ошибку , то ее компилятор просто не видит, они неподключены к проекту во время линковки. Хотя они находятся в той же папке, и если нажать на ctrl и клацнуть мышкой на QString vivod = Analize::analize(lineEdit->text()); то оно перейдет к обьявлению функции. Если соединить класы в одном файле то все работает отлично Добавлено через 1 минуту и 11 секунд как их надо правильно добавить к проекту? --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
KL7 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
так у меня вроде в разных файлах... или я Вас не так понял? все зависит от того, какой проект =) eclipse, vs, cmd? я в консоли запустил свой батник (qmake -project, qmake -makefile, make release)... и Ваш проект собрался и запустился... c eclipse уже подружился, но с ним что-то небольшое собирать - мороки больше... |
|||
|
||||
pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
все так, только у меня analize.h analize.cpp не компилятся вместе с проектом все делаю в еклипсе. проект создаю file>new>qt gui project Это сообщение отредактировал(а) pycha - 13.7.2009, 02:14 --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
KL7 |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 7.12.2008 Где: Minsk City Репутация: 2 Всего: 2 |
была бы студия - можно было бы попробовать пересобрать проект... там косяки часто случаются... в стабильность eclipse я пока верю... но говорят она идеально работает только для Java-ы... если не разобрался - давай может все существенные файлы из проекта (включая ui) - попробую у себя собрать =) |
|||
|
||||
dix75 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 462 Регистрация: 17.7.2007 Репутация: 1 Всего: 1 |
pycha,
Все правильно с кодом. Почему у тебя файлы не в проекте? -------------------- save your mind |
|||
|
||||
pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
кстати нащет пересоздания проекта, эта вещь меня тоже уже задолбала. Тут как оно работает, сперва выдает эту ошибку, потом при попытке перекомпилить выдает месаджбокс "application Launcher" "Launch failed. Binary not found." Иногда даже бывают случаи что каспер выкидывает сообщение что файл analize.exe пытаются перезаписать, (тогда еще ошибок нету) , как только это я разрешаю, то вылетают те ошибки. Но это только иногда. Чтобы перекомпилить вообщем надо удалять проект и содавать его опять, при этом если убрать вызов функции, то оно скомпилится норм.
зы Там сначало оговорился, analize.h подключается к проекту и участвует при компиляции, а вот analize.cpp нет. Хотя они все какбе в проекте. Добавлено через 4 минуты и 14 секунд вот, в последних используемых файлах в эклипсе видно что все файлы пренадлежат проекту Присоединённый файл ( Кол-во скачиваний: 9 ) ![]() --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
pycha |
|
|||
![]() главный анастазиолог ![]() Профиль Группа: Участник Сообщений: 239 Регистрация: 20.6.2008 Где: Украина Репутация: нет Всего: 13 |
блин, я подумал и все функции забросил в analize.h . В результате получил такое
они пропадают если файл не подключать, у меня уже руки опускаются --------------------
ищу хакера со знанием компьютера длятехкт |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 16 Всего: 92 |
.pro файл можешь показать?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |