Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Ostapich от Январь 20, 2019, 13:02



Название: double криво печатается в консоль
Отправлено: Ostapich от Январь 20, 2019, 13:02
Добрый день уважаемые!
Возникла проблема,ни как не могу ее побороть.
Есть класс, я его заполняю в одном месте. Потом передаю конструктору другого класса, конструктор с помошью обьекта заполняет свои данные.
Так вот. В  первом случае в консоль через дебаг все нормально и коректно выводится, а во втором случае, когда я все скопировал и пытаюсь вывести значения второго класса, ерунду пишет какую то  и то не полностью.
Вот лог.
https://pp.userapi.com/c844721/v844721604/186b7d/DAWK-3dLTY4.jpg (https://pp.userapi.com/c844721/v844721604/186b7d/DAWK-3dLTY4.jpg)
Код участком:
заполнение данных в классе:
Код:
void Recepe::itogPrem(){
    foreach (Weight value, basis.compWei) {
        basis.itogPrem += value.weight;
    }
    qDebug() << "++: " <<basis.itogPrem;
    itog += basis.itogPrem;
    foreach (Premiks var, listPrem) {
        foreach (Weight val, var.compWei) {
            var.itogPrem += val.weight;
        }
        qDebug() << "++: " <<var.itogPrem;
        itog += var.itogPrem;
    }
}
Потом в MainWindow мы создаем класс Recepe и создаем второй класс, куда передаем объект Recepe:

Код:
Recepe recOne("Барбекю 100070321");
    SwitchControl *Control= new SwitchControl(recOne);
    //заполнение списков для рецептуры
    recOne.FillOne();
    CounterWindow *countWind = new CounterWindow (recOne);

В конструкторе класса CounterWindow вот так, и тут то как раз выводит ерунду:
Код:
CounterWindow::CounterWindow(Recepe tmp){

    namePremList += tmp.basis.namePrem;
    foreach( Premiks value, tmp.listPrem ){
        namePremList += value.namePrem;
    }

    itogPremList += tmp.basis.itogPrem;
    foreach (Premiks value, tmp.listPrem) {
        itogPremList += value.itogPrem;
    }
itogRecept = tmp.itog;
Print();

}



void CounterWindow:: Print (){
    foreach (QString val, namePremList) {
        qDebug() << "ИМЯ" << val ;
    }
    foreach (double var, itogPremList) {
        qDebug() << "ВЕС" << var ;
    }


Название: Re: double криво печатается в консоль
Отправлено: Ostapich от Январь 20, 2019, 13:27
Поменял foreach, на обычный цикл с итераторами , заработало :
Код:
void Recepe::itogPrem(){
    foreach (Weight value, basis.compWei) {
        basis.itogPrem += value.weight;
    }
    qDebug() <<  " * " << basis.itogPrem;
    itog += basis.itogPrem;
    QList<Premiks>::iterator iter;
    for(iter = listPrem.begin();iter != listPrem.end(); ++iter){
        foreach (Weight val, iter->compWei){
           iter->itogPrem += val.weight;
        }
        qDebug() <<  " * " << iter->itogPrem;
                itog += iter->itogPrem;
    }

}