2016-03-11 7 views
6

Я читал книгу об использовании Qt5 (автор Макс Schlee), и я заметил, что некоторые примеры объявили существующий Qt-класс в заголовочном файле, например, так:Объявление класса Qt в заголовочном файле

class QProgressBar; 

Итак, мой вопрос – почему бы нам не включить заголовочный файл QProgressBar без объявления class QProgressBar; в нашем файле заголовка?

+0

Основная причина не в том, что вы должны использовать дочерние объекты/виджеты по значению, а затем вы должны включать соответствующие заголовки в любом случае - вы не можете использовать классы, объявленные вперед. Большинство примеров Qt используют указатели на дочерние объекты и дочерние виджеты с откатом и совершенно неоправданно ... –

ответ

7

Это не о Qt, это C++.

Это называется форвардной декларацией.

В основном в .h вы просто говорите, что QProgressbar является классом и не жалуются на то, что он не определен. Затем в файле .cpp вы помещаете заголовок, чтобы во время компиляции все было четко определено.

Это может сэкономить время компиляции, так как #include вынуждает компилятор открыть больше файлов и обработать больше ввода.

Это также может сэкономить на ненужной перекомпиляции. #include может заставлять ваш код перекомпилировать чаще, из-за несвязанных изменений в заголовке.

Конечно, на больших проектах у вас могут быть недостатки.

Вы можете найти еще HERE.

Смежные вопросы