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