未初始化的局部变量'totalPrice'使用

问题描述 投票:-4回答:2

我正在为将书籍放入购物车的类创建代码,但是,代码必须包含在类中。除了我的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;
}
c++ class
2个回答
2
投票

它已声明,但尚未初始化,请尝试将其更改为

double ShoppingCart::totalPrice() {
double totalPrice = 0;

for (int i = 0; i < 100; i++) {
...

当你声明一个变量时,它有一个值,恰好就是它在创建时的内存位置(它基本上没用)。当您使用该变量值时,编译器会抛出警告,因为它不认为您想要使用它。如果用0覆盖该无用值,则可以使用该变量进行求和。


0
投票

你需要将totalPrice初始化为0.你试图将未初始化的变量加起来。这是修复。

double totalPrice = 0;
© www.soinside.com 2019 - 2024. All rights reserved.