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

为什么C++中PrintMenu函数无法识别main()内创建的ShoppingCart对象

问题原因

你遇到的编译报错属于C++变量作用域规则导致的问题:在main函数内部声明的ShoppingCart cart是main的局部变量,仅在main函数的代码范围内可访问,你独立封装的PrintMenu函数不在main的作用域内,自然无法识别cart对象。

解决方案

只需要两步修改即可解决这个问题:

  1. 修改PrintMenu的函数定义,新增ShoppingCart类型的引用参数,这样可以直接操作传入的购物车对象,不会生成额外副本:
// 将原来的 void PrintMenu() 替换为以下定义
void PrintMenu(ShoppingCart& cart) 
{
    // 原有函数内部逻辑保持不变即可
}
  1. 修改main函数中调用PrintMenu的代码,把创建好的cart对象作为参数传入:
// 将原来的 PrintMenu(); 替换为以下代码
PrintMenu(cart);
其他注意事项

你的现有代码还存在几个隐藏问题,可以提前修复避免后续报错:

  • ItemToPurchase.h中存在拼写错误:GetDiscription应为GetDescription,和成员变量itemDescription对应
  • ShoppingCart类的RemoveItem函数逻辑有误:找到匹配商品删除后需要加break终止循环,否则删除元素后继续遍历会出现下标越界问题;另外输出「Item not found」的逻辑位置不对,应该是遍历完所有商品都没找到再输出,而不是第一个不匹配就输出
  • ItemToPurchase.h中声明的SetDescription为const成员函数,但是该函数需要修改itemDescription成员变量,需要去掉const修饰符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 18:18:02