![]() |
|
|
![]()
|
|
| gordmiand |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
создал новое gui- приложение и добавил в него новый класс...подключаю их хидеры (mainwindow.h и klass.h) друг к другу и в mainwindow.h просто пытаюсь создать экземпляр класса klass2:
выдаются ошибки: "ISO C++ forbids declaration of 'Klass2' with no type" "expected ';' before '*' token" см. приложенный архив приложения... подскажите в чем тут дело и как это исправить? Присоединённый файл ( Кол-во скачиваний: 6 )
Gproj.rar 157,04 Kb |
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
говорит о том, что компилятор не знает кто такой 'Klass2' Это сообщение отредактировал(а) andrew_121 - 22.2.2010, 20:34 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| gordmiand |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
но почему не знает? я же в mainwindow.h подключаю соответствующий хидер (klass2.h), в котором и объявлен данный Klass2-класс...
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 11 Всего: 33 |
а потому что, из klass2.h нужно убрать "#include "mainwindow.h"" -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| Madonna |
|
|||
![]() Forbidden love... ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 22.1.2009 Где: Москва Репутация: 3 Всего: 4 |
ещё надо объявить класс
--------------------
Best regards, Madonna |
|||
|
||||
| SABROG |
|
||||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Если имеется ввиду Forward Declaration, тогда так:
Но обязательным условием этого является использование указателя на объект, а не самого объекта. |
||||||
|
|||||||
| Madonna |
|
|||
![]() Forbidden love... ![]() Профиль Группа: Участник Сообщений: 107 Регистрация: 22.1.2009 Где: Москва Репутация: 3 Всего: 4 |
опечатка...
У него там указатель на объект) --------------------
Best regards, Madonna |
|||
|
||||
| SABROG |
|
||||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Эта фраза вводит в заблуждение:
Экземпляр класса и указатель на экземпляр класса разные вещи. Будет весело, если следующим постом автора будет ошибка об Access Violation / Segmentation Fault. |
||||
|
|||||
| gordmiand |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 772 Регистрация: 15.4.2007 Репутация: нет Всего: 0 |
andrew_121: подключать "mainwindow.h"" в klass2.h нужно, так как в Klass2 тоже хотелось бы использовать функции класса MainWindow...
верный ответ дал SABROG - по поводу объявления класса: class Klass2; спасибо за ответ, но хотелось бы знать а зачем это? в том же билдере или делфях достаточно было бы инклуда соответствующего хидера... |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
Когда я использовал Borland Builder C++, то мне также приходилось использовать forward declaration. Возможно в паскале это как-то иначе разруливается. А нужно по двум причинам: - решить проблему зацикливания, если класс A содержит класс B, а класс B содержит класс A. - говорит компилятору не искать полное описание типа, если он итак знает размер указателя, а связывание произвести уже в файле реализации (.cpp), когда переменная будет использоваться. Может сократить тем самым время компиляции, а также делает хедер автономным файлом, который может использоваться в качестве интерфейса к классу без необходимости таскать всю реализацию типов за собой. Пример .lib/.a (файлы библиотек) + .h файлы. Связывание произойдет в момент линковки. http://www.parashift.com/c++-faq-lite/misc....html#faq-39.12 |
|||
|
||||
| dgavdet1 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 24.12.2010 Репутация: нет Всего: нет |
Здравствуйте. В QT я новичёк. Мне надо сделать простое приложение без графики чисто для обработки 2-х файлов. Дело вот в чём: пытаюсь создать класс, но выдаётся ошибка одна и 2 предупреждения:
предупреждение 1 D:/qt/yt/DataUF.cpp:1: In file included from DataUF.cpp:1, предупреждение 2 D:/qt/yt/main.cpp:6: from main.cpp:6: ошибка D:/qt/yt/DataUF.h:11: error: expected class-name before '{' token поясните пожалуйста, что за ошибка с предупреждениями? файл класс.h
файл класс.cpp
файл main.cpp
|
||||||
|
|||||||
| pilotnet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 22.4.2008 Репутация: нет Всего: нет |
в файле main.cpp
замени #include "DataUF.cpp" на #include "DataUF.h" |
|||
|
||||
| SABROG |
|
|||
![]() Hacker ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2481 Регистрация: 18.9.2006 Репутация: 81 Всего: 91 |
При таком коде проще будет заменить символ табуляции '\t' на перевод строки в файле Это сообщение отредактировал(а) SABROG - 19.1.2011, 15:54 |
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |