1
我有4個類Product和MultiBuyProduct(它是產品的子代),用於計算價格,以及可以添加到MultiBuyProduct的哪些調用函數的購物車獲取他們的價格和打印收據控制檯,和金額是一個類需要2個整數,並對他們做一些計算,例如添加減去,然後返回格式化的價格。從我的main.cpp我打電話從Child類C++調用基類方法
MultiBuyProduct p2("Wine", Amount(10,0), 2, 10);
ShoppingCart SC;
SC.add(&p2 ,2, true);
下面
顯示購物車加入方法
void ShoppingCart::add(Product *p, int quantity, bool end)
{
mProduct = p;
//Sets member vairable value
mQuantity = quantity;
//Gets Name of product 'p'
mProductName = mProduct->getName();
//Gets price of product 'p'
mAmount = mProduct->getPrice();
//Gets total price of product 'p' based on quantity
mAmountTotal = mProduct->getPrice(quantity);
//Updates the GrandTotal
mGrandTotal.add(mProduct->getPrice(0));
}
下面
顯示MultiBuyProduct用getPrice
Amount MultiBuyProduct::getPrice(int quantity)
{
if(quantity >= mMinDiscountedQuantity)
{
mPrice.setFullPence(mPrice.getFullPence() * quantity);
mPrice.setPounds(mPrice.getFullPence()/100);
mPrice.setPence(mPrice.getFullPence()%100);
int j = mPrice.getFullPence()/100 * mDiscountedPercent;
saving += j;
int i = mPrice.getFullPence() - j;
mPrice.setFullPence(i);
mPrice.setPounds(i/100);
mPrice.setPence(i%100);
return Amount(mPrice.getFullPence()/100, mPrice.getFullPence()%100);
}
else
{
return Product::getPrice(quantity);
}
}
OK所以基本功能是工作在正確的總打印到控制檯,顯示10%已被打折,因爲數量大於或等於2.
但達到我的else語句(在購物車加入方法尋找項目的單一價格時)
mAmount = mProduct->getPrice();
,但沒有返回我認爲它是因爲某種原因產品不包含數據MultiBuyProduct了,我基本上需要使產品具有與multiBuy產品相同的數據,然後在其上調用get price。 (基本上就像在Java中,我會打電話(否則super.getPrice(數量)< < <,但我知道你不能這樣做,在C++)
編輯:這裏是
產品類結構:
Product::Product(std::string name, Amount price):aName(name), mPrice(price)
{
}
MultiBuyProduct:
MultiBuyProduct::MultiBuyProduct(std::string aName, Amount price, int minDiscountedQuantity, int discountedPercent)
: mMinDiscountedQuantity(minDiscountedQuantity), mDiscountedPercent(discountedPercent),
mPrice(price), aName(aName)
{
mProduct = Product(mName,mPrice);
}
是啊我認爲這是明顯的答案,但是當你這樣做是編譯崩潰becasue aName和mPrice可能尚未初始化 – AngryDuck 2013-03-11 11:25:21
你可以嘗試編輯,請回到它是否工作? – Premsuraj 2013-03-11 11:30:11
好吧,以便明顯的工作,因爲唯一改變的是價格和名稱現在在構造函數中初始化,但產品現在甚至沒有初始化? – AngryDuck 2013-03-11 11:31:56