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;


и т.д.

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


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

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




Репутация:   94  


Существенная оговорка.
Предварительное объявление годится только в случае, если в заголовочнике объявляется ссылка или указатель на некий класс. Тогда компилятору достаточно сказать "такой-то класс действительно существует". Т.к. и ссылка и указатель на данной конкретной платформе всегда одинаковое кол-во байт занимает.

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

Примеры, когда без инклюда нельзя
#include <SameClass>

class SubClass : public SameClass
{

...
}
#include <SameClass>

class MyClass
{
...
private:
SameClass var;
}
#include <SameClass>

class MyClass
{
...
public:
    SameClass func_1(); // возвращает значение
    
    func_2(SameClass var); // принимает значение
}
#include <SameClass>

class MyClass
{
...
public:
    SameClass func_1(SameClass *var)
    {
        var->method(); // обращение к члену класса
    }
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- 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


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


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




RSS Текстовая версия Сейчас: 30.11.2024, 1:01