Название: Проблема с включением файлов Отправлено: ruzik от Июль 14, 2012, 23:38 Здравствуйте, есть такой класс:
Код: #ifndef RFILEDOWNLOADER_H Файл RFileDownloader.h включается в rizekFaster.h и RIconManager.h, оба этих файла имеют такие строки: Код: #include <QString> Цитировать In file included from Classes\RFileDownloader\RFileDownloader.cpp:3: А если поставить в RFileDownloader.h обратно includ'ы то все компилируется хорошо./Classes/RFileDownloader/RFileDownloader.h:24: error: field '_manager' has incomplete type ./Classes/RFileDownloader/RFileDownloader.h:25: error: field '_url' has incomplete type ./Classes/RFileDownloader/RFileDownloader.h:18: error: invalid use of incomplete type 'struct QUrl' ./Classes/RFileDownloader/RFileDownloader.h:9: error: forward declaration of 'struct QUrl' ./Classes/RFileDownloader/RFileDownloader.h:27: error: invalid use of incomplete type 'struct QUrl' ./Classes/RFileDownloader/RFileDownloader.h:9: error: forward declaration of 'struct QUrl' ./Classes/RFileDownloader/RFileDownloader.h: In member function 'void RFileDownloader::setUrl(const QUrl&)': ./Classes/RFileDownloader/RFileDownloader.h:21: error: '_url' was not declared in this scope ./Classes/RFileDownloader/RFileDownloader.h: In member function 'QUrl RFileDownloader::url() const': ./Classes/RFileDownloader/RFileDownloader.h:22: error: return type 'struct QUrl' is incomplete ./Classes/RFileDownloader/RFileDownloader.h:22: error: '_url' was not declared in this scope Classes\RFileDownloader\RFileDownloader.cpp: In constructor 'RFileDownloader::RFileDownloader(const QUrl&, QObject*)': Classes\RFileDownloader\RFileDownloader.cpp:13: error: '_url' was not declared in this scope Classes\RFileDownloader\RFileDownloader.cpp: In member function 'void RFileDownloader::startDownloading(QUrl)': Classes\RFileDownloader\RFileDownloader.cpp:20: error: 'url' has incomplete type ./Classes/RFileDownloader/RFileDownloader.h:9: error: forward declaration of 'struct QUrl' Classes\RFileDownloader\RFileDownloader.cpp:24: error: '_url' was not declared in this scope Classes\RFileDownloader\RFileDownloader.cpp:26: error: variable 'QNetworkRequest request' has initializer but incomplete type Classes\RFileDownloader\RFileDownloader.cpp:26: error: '_url' was not declared in this scope Classes\RFileDownloader\RFileDownloader.cpp:27: error: '_manager' was not declared in this scope Почему так происходит? Название: Re: Проблема с включением файлов Отправлено: mutineer от Июль 14, 2012, 23:47 Потому что forward declaration можно использовать только если у тебя есть указатели на объекты, а не сами объекты.
Код: private: Название: Re: Проблема с включением файлов Отправлено: ruzik от Июль 15, 2012, 10:45 Понятно, большое спасибо!
Название: Re: Проблема с включением файлов Отправлено: ruzik от Июль 15, 2012, 19:25 И еще один вопрос по теме:
Если я использую ссылки в forward declaration, то с ними поступать как с указателями(объявление класса) или как с объектами(include)? Название: Re: Проблема с включением файлов Отправлено: Igors от Июль 15, 2012, 19:58 И еще один вопрос по теме: Как с указателямиЕсли я использую ссылки в forward declaration, то с ними поступать как с указателями(объявление класса) или как с объектами(include)? Название: Re: Проблема с включением файлов Отправлено: ruzik от Июль 15, 2012, 20:01 Понятно, еще раз спасибо!
Название: Re: Проблема с включением файлов Отправлено: ruzik от Июль 21, 2012, 15:28 И еще один вопрос напоследок, есть такой метод класса:
Код: QIcon icon(); Название: Re: Проблема с включением файлов Отправлено: kambala от Июль 21, 2012, 18:23 а самому проверить не? возвращается же не ссылка и не указатель, значит нужно.
Название: Re: Проблема с включением файлов Отправлено: ruzik от Июль 21, 2012, 18:39 Спасибо!
Извините за лишнюю назойливость, просто проверил в проекте - но мало ли вдруг QIcon включается где-то в инклудах которые сами включаются и я запомню как неправильно |