Russian Qt Forum
Ноябрь 23, 2024, 20:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Давно интересующий вопрос.  (Прочитано 2894 раз)
nomit
Гость
« : Декабрь 14, 2011, 19:33 »

Привет всем народ. У меня уже давно созрел вопрос, ну незнаю, как сформулировать в поисковике что бы найти.

В разных статьях находил такую запись кода

Код:

#ifndef LISTWIDGET_H
#define LISTWIDGET_H

#include <QtGui>

class QListWidget;

class ListWidget : public QListWidget
{
    Q_OBJECT
private:
     QListWidget * listWidgetSurname;
public:
    explicit ListWidget(QWidget *parent = 0);


......


Вопрос заключается в вот в чем, зачем записывать класс QListWidget? Не проще подключить с помощью  #include ?

Есть такое подозрение, что это нужно что бы юзая, какую нибудь либу не нужно было копировать заголовочные файлы?(*.h)

Будьте добры дайте ответ, можно ссылку почитать для чего это нужно. Заранее благодарен. Улыбающийся
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #1 : Декабрь 14, 2011, 19:45 »

При компиляции инклуды разворачиваются во вставку всего проинклуденного файла.
Поэтому в h-файлы, которые потом сами ещё куда-то инклудиться будет лучше не вставлять лишнего, это замедляет и так не очень быструю компиляцию.
Записан
nomit
Гость
« Ответ #2 : Декабрь 14, 2011, 20:27 »

Спасибо.  Улыбающийся
Записан
vregess
Гость
« Ответ #3 : Декабрь 14, 2011, 23:19 »

Это называется forward declaration, если не по русски.
Помимо того, что описал LisandreL, это также решает проблему перекомпиляции зависимых элементов при изменении заголовочного файла.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #4 : Декабрь 15, 2011, 09:39 »

А еще без нее невозможно сделать 2 класса, содержащие друг друга.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.045 секунд. Запросов: 22.