C++技术求助:调用dispense(order[1])失败,疑仅差一个字符
问题分析与解决
你的代码核心问题是order数组的类型定义错误:
zinc、omega、magnesium作为数组名,本质是指向数组首元素的int*指针,dispense(zinc)能正常运行说明该函数接收int*类型参数。- 当前
int order[] = {*zinc, *omega, *magnesium};定义的是int类型数组,存储的是每个数组的首元素值(*zinc等价于zinc[0]),因此order[1]是int类型值,与dispense要求的int*类型不匹配,导致调用失败。
解决方法(仅修改一个核心字符)
将order的类型修改为指针数组,只需在int后添加一个*,同时修正初始化列表的笔误(去掉每个元素前的*):
int* order[] = {zinc, omega, magnesium};
修改后,order数组存储的是三个数组的指针,order[1]就是指向omega数组的int*指针,调用dispense(order[1])就会和dispense(omega)完全等价,可正常运行。
内容的提问来源于stack exchange,提问作者Florian Schneider
相关产品推荐
相关产品推荐

