Russian Qt Forum

Qt => Общие вопросы => Тема начата: mokynis от Сентябрь 28, 2009, 08:54



Название: Бланшет-предварительное объявление класса
Отправлено: mokynis от Сентябрь 28, 2009, 08:54
В книге во второй главе приводится пример предварительного объявления классов. Я попробовал сделать что-то похожее- не получилось. Вот код:
////dialogimpl.h
#ifndef DIALOGIMPL_H
#definr DIALOGIMPL_H
#include<QDialog>
#include "ui_dialog.h"
#include <QVector>
//class QVector<int>; //если без <int>, пишет, что нужен шаблон, если с <int>, то при объявлении
//ivec пишет, что вектор имеет "неполный тип"
class DialogImpl:public QDialog,public Ui::Dialog
{
Q_OBJECT
public:
DialogImpl(QWidget *parent=0,Qt::WFlags f=0);
private:
QVector,int> ivec;
private slots:
void fillVec();
};
#endif

////dialogimpl.cpp
#include "dialogimpl.h"
#include<QDebug>
DialogImpl::DialogImpl(QWidget *parent,Qt::WFlags f):QDialog(parent,f)
{
setupUi(this);
connect(Button,SIGNAL(clicked()),this,SLOT(fillVec()));
}
void DialogImpl::fillVec()
{
ivec.push_back(2);
qDebug()<<ivec[0];
}

в общем, все работает, только если в .h-файле включаю QVector.h
если, как рекомендует Бланшет (правильно, между прочим, рекомендует), то выдает ошибки.
Подскажите, как правильно предварительно объявить класс, а то если несколько файлов, да в каждом нужно упомянуть вектор, так не включать же его библиотеку везде?


Название: Re: Бланшет-предварительное объявление класса
Отправлено: SimpleSunny от Сентябрь 28, 2009, 09:29
template <typename T> class QVector;


Название: Re: Бланшет-предварительное объявление класса
Отправлено: lit-uriy от Сентябрь 28, 2009, 09:56
>> QVector,int> ivec;
ты создаешь обычную переменную, а не указатель.

П.С. это уже обсуждалось, поищи по форуму