crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> class QPushButton вместо include <QPushButton>, class VS #include
dsp
  опции профиля:
сообщение 9.2.2011, 0:14
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 51
Регистрация: 12.10.2010
Пользователь №: 2109

Спасибо сказали: 4 раз(а)




Репутация:   0  


Подскажи пожалуйста.
В разных примерах программ на Qt классы виджетов не добавляются через инклуд

т.е.

#include <QPushButton>
#include <QLabel>
,

а пишутся так:

class QPushButton;
class QLabel;


и т.д.

с чем это связано? и что использовать?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Rocky
  опции профиля:
сообщение 10.2.2011, 11:28
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Цитата(Алексей1153 @ 9.2.2011, 10:03) *
Цитата(Litkevich Yuriy)

Если же ты используешь класс для наследования, или для создания переменной на стеке (обычной) или используешь члены некого класса, то придётся использовать инклюд.

...но при суровой необходимости и это можно обойти

Если класс используется для наследования (и далее по тексту), хидер включать необходимо. И легальными средствами имхо это не обойти. Компилятор должен обладать информацией о том, что это за класс.

Может я жестко туплю конечно, либо придираюсь... А в чем приведенный код Алексей1153, kwisp, позволяет обойти то, о чем говорит Litkevich Yuriy? То что вы приводите, называется паттерн проектирования пимпл - ака идиома скрытой реализации. Мне кажется это не есть обход в том смысле в котором имеется ввиду.

Ведь можно не создавать объект на стеке в капсуле класса, а использовать указатель на него. Наследование можно опять-таки заменить через указатель (практически всегда). И тогда тоже не нужно будет подключать хидер с капсулой класса в своем хидере. Вопрос ведь какой, как сделать так, чтобы при наследовании или создании объекта класса на стеке не нужно было включать хидер класса. Держу пари что как-то можно. Но схоу не могу сообразить. Вероятно, тут будет что-то из жесткого хака (типа define private public)...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- dsp   class QPushButton вместо include <QPushButton>   9.2.2011, 0:14
- - Алексей1153   это форварды (предопределения) классов для возможн...   9.2.2011, 0:31
- - igor_bogomolov   Это называется "предварительное объявление кл...   9.2.2011, 0:39
- - Litkevich Yuriy   Существенная оговорка. Предварительное объявление ...   9.2.2011, 6:19
- - Алексей1153   Цитата(dsp @ 9.2.2011, 2:14) class VS #in...   9.2.2011, 9:03
- - Litkevich Yuriy   Цитата(Алексей1153 @ 9.2.2011, 11:03) .но...   9.2.2011, 20:40
- - Алексей1153   Litkevich Yuriy, например так хотим класс QMyLin...   10.2.2011, 8:16
- - kwisp   Цитата(Litkevich Yuriy @ 9.2.2011, 20:40)...   10.2.2011, 10:29
- - Rocky   Цитата(Алексей1153 @ 9.2.2011, 10:03) Цит...   10.2.2011, 11:28
- - Алексей1153   Rocky, Цитата(Rocky @ 10.2.2011, 13:28) ...   10.2.2011, 11:33
- - Rocky   Цитата(Алексей1153 @ 10.2.2011, 12:33) Ци...   10.2.2011, 11:51
- - Алексей1153   Цитата(Rocky @ 10.2.2011, 13:51) Алексей1...   10.2.2011, 12:21
- - igor_bogomolov   to Алексей1153 Цитата(Litkevich Yuriy @ 9.2.2...   10.2.2011, 19:34
- - Rocky   igor_bogomolov, спасибо, хоть ты понял что я пытал...   10.2.2011, 20:04
- - Алексей1153   igor_bogomolov, мы просто напросто в ненужные дебр...   10.2.2011, 20:10
- - kwisp   по-моему вы ребята уже предвзято к друг другу отно...   11.2.2011, 10:58
- - Алексей1153   Цитата(kwisp @ 11.2.2011, 12:58) по-моему...   11.2.2011, 11:22
- - Litkevich Yuriy   Резюме: Если класс наследник другого, то заголовоч...   12.2.2011, 12:47


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.4.2024, 4:16