Russian Qt Forum
Ноябрь 26, 2024, 08:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QBitArray. Ошибка при компилировании  (Прочитано 3628 раз)
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(){

}

Записан
SimpleSunny
Гость
« Ответ #1 : Октябрь 07, 2009, 15:20 »

>>QBitArray bperebor[icount];
Вы точно хотели создать массив QBitArray? Или все таки так:
QBitArray bperebor(icount);
Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #2 : Октябрь 07, 2009, 15:21 »

QBitArray bperebor[icount];
...
t=bperebor.testBit(i);

Непонимающий
Записан

Юра.
hackoff
Гость
« Ответ #3 : Октябрь 07, 2009, 15:50 »

>>QBitArray bperebor[icount];
Вы точно хотели создать массив QBitArray? Или все таки так:
QBitArray bperebor(icount);
Вы абсолютно правы. Очень большое спасибо. Я 4 часа потратил борясь с этой ошибкой. Глюк )
Записан
hackoff
Гость
« Ответ #4 : Октябрь 07, 2009, 15:53 »

Тему можно закрыть или удалить.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.088 секунд. Запросов: 22.