为什么OnlineGDB会忽略我C++类成员函数的第二个参数?
问题原因及修复方案
这个报错完全是C++语法书写错误导致,和设备内存、浏览器状态没有任何关联。
错误根因
C++中带变量名的数组形参有固定语法要求:必须是元素类型 变量名[],你在.cpp文件的swap函数定义中写成了const string[] from这种元素类型[] 变量名的错误格式,打乱了编译器的参数解析逻辑,导致编译器错误地将你的双参数函数识别为单参数函数,无法和头文件的双参数声明匹配。
修复方法
两种方案二选一即可,无需修改头文件的原有声明:
- 调整形参书写顺序,把变量名移到方括号前:
void list::swap(const string from[], const string to[])
- 改用等价的指针写法,可读性更高:
void list::swap(const string* from, const string* to)
内容的提问来源于stack exchange,提问作者Pål Hart
相关产品推荐
相关产品推荐

