我正在为将书籍放入购物车的类创建代码,但是,代码必须包含在类中。除了我的totalPrice double之外,它还是相当不错的。我已将它列在我的公共课程中,但它没有认出来。我做错了什么?我是否必须在其他地方初始化它?非常感谢帮助我。
class ShoppingCart
{
private:
Book* bookArray[100];
int arrayEnd;
public:
void addBook(Book *);
double totalPrice();
ShoppingCart();
};
ShoppingCart::ShoppingCart() {
for (int i = 0; i < 100; i++) {
bookArray[i] = { NULL };
}
arrayEnd = 0;
}
void ShoppingCart::addBook(Book *currentItem) {
bookArray[arrayEnd] = currentItem;
arrayEnd++;
}
double ShoppingCart::totalPrice() {
double totalPrice;
for (int i = 0; i < 100; i++) {
if (bookArray[i] != NULL) {
totalPrice += bookArray[i]->getPrice();
}
else {
break;
}
}
return totalPrice;
}
它已声明,但尚未初始化,请尝试将其更改为
double ShoppingCart::totalPrice() {
double totalPrice = 0;
for (int i = 0; i < 100; i++) {
...
当你声明一个变量时,它有一个值,恰好就是它在创建时的内存位置(它基本上没用)。当您使用该变量值时,编译器会抛出警告,因为它不认为您想要使用它。如果用0覆盖该无用值,则可以使用该变量进行求和。
你需要将totalPrice初始化为0.你试图将未初始化的变量加起来。这是修复。
double totalPrice = 0;