You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++课程作业程序问题:getTotalCost()函数输出0排查求助

排查C++ ShoppingCart中getTotalCost()返回0的问题

嘿,我来帮你搞定这个头疼的问题!从你给出的代码来看,首先就发现一个明显的漏洞——addItem函数的实现没写完啊!cartItems.pus...应该是cartItems.push_back(item)吧?如果这一步没完成,购物车根本没添加任何商品,那总价自然是0了。

接下来我们一步步排查可能的原因:

1. 先补全addItem函数的实现

这是最基础的一步,确保商品真的能被加入购物车:

void ShoppingCart::addItem(ItemToPurchase item) {
    cartItems.push_back(item); // 把商品添加到容器里,这步可不能少!
}

要是漏掉这行代码,你的cartItems容器一直是空的,计算总价的时候自然啥都加不出来,只能返回0。

2. 检查getTotalCost()的实现逻辑

你没给出这个函数的代码,但通常它需要遍历购物车里的所有商品,累加每个商品的「价格×数量」。如果这里写得有问题,也会返回0,比如:

  • 根本没遍历cartItems,直接return 0
  • 访问商品的价格或数量时出错(比如变量名拼错,或者ItemToPurchase的成员是私有但没提供访问方法)

给你一个正确的参考实现:

double ShoppingCart::getTotalCost() const {
    double total = 0.0;
    // 遍历购物车里的每一件商品
    for (const auto& item : cartItems) {
        total += item.getPrice() * item.getQuantity(); 
        // 这里假设ItemToPurchase有getPrice()和getQuantity()这两个公开方法
    }
    return total;
}

3. 确认ItemToPurchase类没毛病

得保证ItemToPurchase的价格、数量这些成员变量初始化是对的,而且有正确的访问接口。比如它的头文件应该类似这样:

#ifndef ITEMTOPURCHASE_H
#define ITEMTOPURCHASE_H
#include <string>
using namespace std;

class ItemToPurchase {
private:
    string itemName;
    double itemPrice;
    int itemQuantity;
public:
    // 默认构造函数,这里可以根据需求调整默认值
    ItemToPurchase() : itemName("None"), itemPrice(0.0), itemQuantity(0) {}
    // 带参数的构造函数
    ItemToPurchase(string name, double price, int quantity) 
        : itemName(name), itemPrice(price), itemQuantity(quantity) {}
    // 访问价格和数量的方法
    double getPrice() const { return itemPrice; }
    int getQuantity() const { return itemQuantity; }
    // 其他你需要的方法,比如设置商品信息之类的
};
#endif

要是你创建商品对象的时候,价格或者数量被错误地设成了0,哪怕加到购物车里,总价也还是0。

4. 检查主程序的调用流程

最后看看你在主程序里是怎么用这些类的,得确保:

  • 创建了有效的ItemToPurchase对象(价格和数量都不是0)
  • 调用了addItem把商品加到购物车
  • 之后才调用getTotalCost()

举个正确的调用例子:

int main() {
    ShoppingCart myCart("Saad");
    // 创建一个有实际价格和数量的商品
    ItemToPurchase wirelessMouse("Wireless Mouse", 29.99, 2);
    myCart.addItem(wirelessMouse);
    // 输出总价
    cout << "Total Cost: $" << myCart.getTotalCost() << endl;
    return 0;
}

要是你忘了调用addItem,或者添加的商品本身价格/数量是0,那结果肯定还是0。

先从这几个点查起,大概率是addItem没写完的问题!

内容的提问来源于stack exchange,提问作者Saad Arshad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:18:53