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

类名可作为数组类型吗?使用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:50:19