Название: Бланшет-предварительное объявление класса Отправлено: 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;
ты создаешь обычную переменную, а не указатель. П.С. это уже обсуждалось, поищи по форуму |