Название: QBitArray. Ошибка при компилировании
Отправлено: hackoff от Октябрь 07, 2009, 15:06
При компилировании выдается ошибка src\mywin.cpp:105: error: request for member `testBit' in `bperebor', which is of non-class type `QBitArray[(((unsigned int)(((int)icount) + 1)) + 1u)] . Порождает ошибку строчка 105 mywin.cpp t=bperebor.testBit(i);. Подскажите в чем ошибка использования QBitArray? За код сильно не ругайте, это моя первая софтинка на QT. Решаю задачку про монетки. main.cpp // place your code here #include <QApplication> #include <QTextCodec> #include "mywin.h" int main(int argc,char *argv[]){ QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForTr(codec); QApplication app(argc,argv); mywin w; w.show(); return app.exec(); }
mywin.h #ifndef __MYWIN_H__ #define __MYWIN_H__ #include <QApplication> #include <QMainWindow> #include <QVector> class QListWidget; class QLineEdit; //class QHBoxLayuot; //#include <QLineEdit> class mywin : public QMainWindow { Q_OBJECT public: mywin();//QWidget *parent=0, const char *name=0); ~mywin();
//void add1_slot();
/*protected:*/
private slots:
void add1_slot(); void add2_slot(); void SubGO();
private: QLineEdit * vvod_txt1; QListWidget * mon_pok; QLineEdit * vvod_txt2; QListWidget * mon_pr; QListWidget * qlwout; QVector<int> v_pokupat; QVector<int> v_prod; //QHBoxLayout * vvod_goriz1; };
#endif // __MYWIN_H__
mywin.cpp #include <iostream> #include <QDebug> #include <QMainWindow> #include <QHBoxLayout> #include <QLineEdit> #include <QWidget> #include <QPushButton> #include <QListWidget> #include <QString> #include <QBitArray> //using namespace std; //#include <QStringListModel> #include "mywin.h" mywin::mywin() :QMainWindow() { resize(400,300); setWindowTitle(tr("Софтинка")); //Создаем центральный виджет QWidget * widget = new QWidget; //Первый вертикальный слой QVBoxLayout * vvod_goriz1 = new QVBoxLayout; vvod_txt1 = new QLineEdit; vvod_txt1->setInputMask("DD"); QPushButton * add_pok = new QPushButton(tr("Добавить монетку")); mon_pok = new QListWidget; vvod_goriz1->addWidget(vvod_txt1); vvod_goriz1->addWidget(add_pok); vvod_goriz1->addWidget(mon_pok); /* vvod_goriz1->setMargin(2); vvod_goriz1->setSpacing(4); */ //второй вертикальный слой () QVBoxLayout * vvod_goriz2 = new QVBoxLayout; vvod_txt2 = new QLineEdit; vvod_txt2->setInputMask("DD"); QPushButton * add_pr = new QPushButton(tr("Добавить монетку")); mon_pr = new QListWidget; vvod_goriz2->addWidget(vvod_txt2); vvod_goriz2->addWidget(add_pr); vvod_goriz2->addWidget(mon_pr); //Объединяем слои QHBoxLayout * inf_id = new QHBoxLayout; inf_id->addLayout(vvod_goriz1); inf_id->addLayout(vvod_goriz2); QVBoxLayout * inf_idV = new QVBoxLayout; inf_idV->addLayout(inf_id); QPushButton * cmd_GO = new QPushButton; cmd_GO->setText(tr("GO")); inf_idV->addWidget(cmd_GO); qlwout = new QListWidget; inf_idV->addWidget(qlwout); //помещаем виджет на форму widget->setLayout(inf_idV); setCentralWidget(widget); connect(add_pok, SIGNAL(clicked()), this, SLOT(add1_slot())); connect(add_pr, SIGNAL (clicked()), this, SLOT(add2_slot())); connect(cmd_GO, SIGNAL(clicked()), this, SLOT(SubGO())); }
void mywin::add1_slot(){ QString b; b=vvod_txt1->text(); if (!b.isEmpty()){ mon_pok->addItem(b); v_pokupat<<b.toInt(); } }
void mywin::add2_slot(){ QString b; b=vvod_txt2->text(); if (!b.isEmpty()){ mon_pr->addItem(b); v_prod<<b.toInt(); } }
void mywin::SubGO(){ /*for (int i=0;i<v_pokupat.count(); i++){ b.setNum(v_pokupat[i]); mon_pr->addItem(b); }*/ int s; int icount; int p=v_pokupat.count(); int pr=v_prod.count(); icount=p+pr; /*QString b; b.setNum(icount); mon_pr->addItem(b);*/ QBitArray bperebor[icount]; bool t; int i=0; for (i=0; i<icount; i++){ t=bperebor.testBit(i); if (t==true){ if (i<p){ s=s+v_pokupat[i]; }else{ s=s-v_prod[i-p]; } } } }
mywin::~mywin(){
}
Название: Re: QBitArray. Ошибка при компилировании
Отправлено: SimpleSunny от Октябрь 07, 2009, 15:20
>>QBitArray bperebor[icount]; Вы точно хотели создать массив QBitArray? Или все таки так: QBitArray bperebor(icount);
Название: Re: QBitArray. Ошибка при компилировании
Отправлено: lit-uriy от Октябрь 07, 2009, 15:21
QBitArray bperebor[icount]; ... t=bperebor.testBit(i);
???
Название: Re: QBitArray. Ошибка при компилировании
Отправлено: hackoff от Октябрь 07, 2009, 15:50
>>QBitArray bperebor[icount]; Вы точно хотели создать массив QBitArray? Или все таки так: QBitArray bperebor(icount);
Вы абсолютно правы. Очень большое спасибо. Я 4 часа потратил борясь с этой ошибкой. Глюк )
Название: Re: QBitArray. Ошибка при компилировании
Отправлено: hackoff от Октябрь 07, 2009, 15:53
Тему можно закрыть или удалить.
|