类名可作为数组类型吗?使用dancer类数组遇‘type name not found’错误
问题解答
类名完全可以作为数组类型,你遇到的错误是基础语法问题,和类作为数组类型本身无关,具体错误点和修复方案如下:
错误原因分析
- 函数参数中的
dancer[]没有指定变量名,编译器无法识别这个数组参数的标识,后续代码里直接用dancer(类名)当数组用,导致"type name not found"。 current的类型是int,但你要存储的是dancer类的对象,类型不匹配,这也是编译错误的来源之一。
修复后的代码
class dancer { public: dancer(); // 请务必实现这个构造函数,否则会出现链接错误 // 为数组参数添加变量名arr void swap(int, int, dancer arr[]); }; // 函数定义中同样需要指定数组参数的变量名 void dancer::swap(int num1, int num2, dancer arr[]) { // 将current的类型改为dancer,匹配数组元素类型 dancer current = arr[num1]; arr[num1] = arr[num2]; arr[num2] = current; }
额外注意事项
- C++中数组作为函数参数时会自动退化为指针,所以
dancer arr[]和dancer* arr的效果是等价的,但使用arr[]更直观表达参数是数组的意图。 - 你声明的默认构造函数
dancer()必须有具体实现(哪怕是空实现),否则程序链接阶段会报错。
内容的提问来源于stack exchange,提问作者Tj 3403
相关产品推荐
相关产品推荐

