
Originally Posted by
aamer4yu
What about the qDebug in constructors ?? are they OK too ??
if they are, then am sure u are overriding those values somewhere else
Thanks for useful hint. So, this is getting weirder and weirder
. I've modified the both constructors in a way:
CMerchandizeOrder::CMerchandizeOrder()
{
resetOrder();
qDebug() << "Default constructor with parameter values:";
qDebug() << "m_OrderValues.iMerchandizeID=" << m_OrderValues.iMerchandizeID;
qDebug() << "m_OrderValues.iMerchandizeQuantity=" << m_OrderValues.iMerchandizeQuantity;
qDebug() << "m_OrderValues.rMerchandizePrice=" << m_OrderValues.rMerchandizePrice;
qDebug() << "m_OrderValues.rSubtotal=" << m_OrderValues.rSubtotal;
qDebug() << "m_OrderValues.strMerchandizeName=" << m_OrderValues.strMerchandizeName;
}
CMerchandizeOrder::CMerchandizeOrder(structOrder& order)
{
m_OrderValues.iMerchandizeID=order.iMerchandizeID;
m_OrderValues.iMerchandizeQuantity=order.iMerchandizeQuantity;
m_OrderValues.rMerchandizePrice=order.rMerchandizePrice;
m_OrderValues.rSubtotal=order.rSubtotal;
m_OrderValues.strMerchandizeName=order.strMerchandizeName;
setDisplayString(m_OrderValues.iMerchandizeID,
m_OrderValues.strMerchandizeName,
m_OrderValues.iMerchandizeQuantity,
m_OrderValues.rMerchandizePrice,
m_OrderValues.rSubtotal);
qDebug() << "Constructor with parameter values:";
qDebug() << "m_OrderValues.iMerchandizeID=" << m_OrderValues.iMerchandizeID;
qDebug() << "m_OrderValues.iMerchandizeQuantity=" << m_OrderValues.iMerchandizeQuantity;
qDebug() << "m_OrderValues.rMerchandizePrice=" << m_OrderValues.rMerchandizePrice;
qDebug() << "m_OrderValues.rSubtotal=" << m_OrderValues.rSubtotal;
qDebug() << "m_OrderValues.strMerchandizeName=" << m_OrderValues.strMerchandizeName;
}
void CMerchandizeOrder::resetOrder()
{
m_OrderValues.iMerchandizeID=0;
m_OrderValues.iMerchandizeQuantity=0;
m_OrderValues.rMerchandizePrice=0.00;
m_OrderValues.rSubtotal=0.00;
//m_OrderValues.strDisplayString=QString("Test Artikel Blank Constructor");
m_OrderValues.
strMerchandizeName=QString("Test Artikel");
setDisplayString(m_OrderValues.iMerchandizeID,
m_OrderValues.strMerchandizeName,
m_OrderValues.iMerchandizeQuantity,
m_OrderValues.rMerchandizePrice,
m_OrderValues.rSubtotal);
}
CMerchandizeOrder::CMerchandizeOrder()
{
resetOrder();
qDebug() << "Default constructor with parameter values:";
qDebug() << "m_OrderValues.iMerchandizeID=" << m_OrderValues.iMerchandizeID;
qDebug() << "m_OrderValues.iMerchandizeQuantity=" << m_OrderValues.iMerchandizeQuantity;
qDebug() << "m_OrderValues.rMerchandizePrice=" << m_OrderValues.rMerchandizePrice;
qDebug() << "m_OrderValues.rSubtotal=" << m_OrderValues.rSubtotal;
qDebug() << "m_OrderValues.strMerchandizeName=" << m_OrderValues.strMerchandizeName;
}
CMerchandizeOrder::CMerchandizeOrder(structOrder& order)
{
m_OrderValues.iMerchandizeID=order.iMerchandizeID;
m_OrderValues.iMerchandizeQuantity=order.iMerchandizeQuantity;
m_OrderValues.rMerchandizePrice=order.rMerchandizePrice;
m_OrderValues.rSubtotal=order.rSubtotal;
m_OrderValues.strMerchandizeName=order.strMerchandizeName;
setDisplayString(m_OrderValues.iMerchandizeID,
m_OrderValues.strMerchandizeName,
m_OrderValues.iMerchandizeQuantity,
m_OrderValues.rMerchandizePrice,
m_OrderValues.rSubtotal);
qDebug() << "Constructor with parameter values:";
qDebug() << "m_OrderValues.iMerchandizeID=" << m_OrderValues.iMerchandizeID;
qDebug() << "m_OrderValues.iMerchandizeQuantity=" << m_OrderValues.iMerchandizeQuantity;
qDebug() << "m_OrderValues.rMerchandizePrice=" << m_OrderValues.rMerchandizePrice;
qDebug() << "m_OrderValues.rSubtotal=" << m_OrderValues.rSubtotal;
qDebug() << "m_OrderValues.strMerchandizeName=" << m_OrderValues.strMerchandizeName;
}
void CMerchandizeOrder::resetOrder()
{
m_OrderValues.iMerchandizeID=0;
m_OrderValues.iMerchandizeQuantity=0;
m_OrderValues.rMerchandizePrice=0.00;
m_OrderValues.rSubtotal=0.00;
//m_OrderValues.strDisplayString=QString("Test Artikel Blank Constructor");
m_OrderValues.strMerchandizeName=QString("Test Artikel");
setDisplayString(m_OrderValues.iMerchandizeID,
m_OrderValues.strMerchandizeName,
m_OrderValues.iMerchandizeQuantity,
m_OrderValues.rMerchandizePrice,
m_OrderValues.rSubtotal);
}
To copy to clipboard, switch view to plain text mode
. Then I've setup the breakpoint IMMEDIALTY AFTER addEntry() call and this is what I get from debug console:
warning: **** CONSTRUCTOR - WITH PARAMETERS values:
warning: m_OrderValues.iMerchandizeID= 15
warning: m_OrderValues.iMerchandizeQuantity= 1
warning: m_OrderValues.rMerchandizePrice= 5.43
warning: m_OrderValues.rSubtotal= 5.43
warning: m_OrderValues.strMerchandizeName= "McToast"
warning: **** DEFAULT CONSTRUCTOR - WITHOUT PARAMETERS values:
warning: m_OrderValues.iMerchandizeID= 0
warning: m_OrderValues.iMerchandizeQuantity= 0
warning: m_OrderValues.rMerchandizePrice= 0
warning: m_OrderValues.rSubtotal= 0
warning: m_OrderValues.strMerchandizeName= "Test Artikel"
warning: **** CONSTRUCTOR - WITH PARAMETERS values:
warning: m_OrderValues.iMerchandizeID= 0
warning: m_OrderValues.iMerchandizeQuantity= 0
warning: m_OrderValues.rMerchandizePrice= 0
warning: m_OrderValues.rSubtotal= 0
warning: m_OrderValues.strMerchandizeName= "Test Artikel"
warning: **** CONSTRUCTOR - WITH PARAMETERS values:
warning: m_OrderValues.iMerchandizeID= 15
warning: m_OrderValues.iMerchandizeQuantity= 1
warning: m_OrderValues.rMerchandizePrice= 5.43
warning: m_OrderValues.rSubtotal= 5.43
warning: m_OrderValues.strMerchandizeName= "McToast"
warning: **** DEFAULT CONSTRUCTOR - WITHOUT PARAMETERS values:
warning: m_OrderValues.iMerchandizeID= 0
warning: m_OrderValues.iMerchandizeQuantity= 0
warning: m_OrderValues.rMerchandizePrice= 0
warning: m_OrderValues.rSubtotal= 0
warning: m_OrderValues.strMerchandizeName= "Test Artikel"
warning: **** CONSTRUCTOR - WITH PARAMETERS values:
warning: m_OrderValues.iMerchandizeID= 0
warning: m_OrderValues.iMerchandizeQuantity= 0
warning: m_OrderValues.rMerchandizePrice= 0
warning: m_OrderValues.rSubtotal= 0
warning: m_OrderValues.strMerchandizeName= "Test Artikel"
To copy to clipboard, switch view to plain text mode
So, if addEntry is called ONE time, why is then first call of constructor (with parameters) ok and then there are other calls of constructor (both) which resets data to 0. WTF?!
Bookmarks