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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: double криво печатается в консоль  (Прочитано 1568 раз)
Ostapich
Гость
« : Январь 20, 2019, 13:02 »

Добрый день уважаемые!
Возникла проблема,ни как не могу ее побороть.
Есть класс, я его заполняю в одном месте. Потом передаю конструктору другого класса, конструктор с помошью обьекта заполняет свои данные.
Так вот. В  первом случае в консоль через дебаг все нормально и коректно выводится, а во втором случае, когда я все скопировал и пытаюсь вывести значения второго класса, ерунду пишет какую то  и то не полностью.
Вот лог.
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 ;
    }
Записан
Ostapich
Гость
« Ответ #1 : Январь 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;
    }

}
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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