C++对象数组代码报错「i未在此作用域中声明」问题求助
错误触发原因
- C++标准规定,在
for循环头部声明的变量(比如你代码里的int i),作用域仅覆盖该for循环的循环体范围。 - 你的第二段遍历代码中,
for循环没有添加花括号{}包裹循环逻辑,C++会默认仅将for后紧跟的第一条语句(也就是cout<<"manager details"<<i+1<<endl;)识别为循环体内容,manager[i].putdata();会被判定为循环外部的独立代码,此时已经超出了变量i的作用域,因此编译器会抛出i IS NOT DECLEARED IN THIS SCOPE的报错。 - 额外说明:你代码里包裹第二段遍历的外层额外空花括号
{}是多余的,不影响逻辑但属于无效代码。
解决方法
给第二个for循环添加花括号,把需要循环执行的两条语句都纳入循环体即可,同时可以删除多余的外层空花括号,修正后的main函数对应片段如下:
int main() { employee manager[size]; for(int i=0;i<size;i++) { cout<<"manager details"<<i+1<<endl; manager[i].getdata(); } cout<<endl; // 修正后的遍历代码 for(int i=0;i<size;i++) { cout<<"manager details"<<i+1<<endl; manager[i].putdata(); } return 0 ; }
内容的提问来源于stack exchange,提问作者theBhevin
相关产品推荐
相关产品推荐

