c++ - 我收到一个“错误:编译时没有匹配的函数调用‘leftRotate’
问题描述
using namespace std;
void leftRotate(int arr[]){
unsigned int n = sizeof(arr)/sizeof(arr[0]);
for(int i = 0; i < n; i++){
cout<<"Value: " << arr[i] << endl;
}
}
//function declaration
void leftRotate(int arr[]);
int main(){
std::list<int> l = {1,2,3,4,5};
leftRotate(l);
return 0;
}
解决方案
std::list<int>
不等于 array int arr[]
,因此,您没有leftRotate
接受编译器的函数会std::list<int>
引发此错误。
为了解决这个问题,根据您的项目需要,您要么必须更改:
- l 到 int 的声明
int l[5] = { 1, 2, 3, 4,5};
- 或者 leftRotate 定义和声明到
void leftRotate(std::list<int> arr)
.
注意:如评论中所述。与许多其他语言不同,在 C 和 C++ 中,您需要明确如何将参数传递给函数,或者通过将数据结构及其中的所有内容复制到新实例(按值传递),或者通过传递指针或引用原始实例(通过引用传递)。在您的情况下,后一个选项更明智,但是您拥有的代码和建议的内容是实现第一个选项。有关更多介绍性信息https://www.geeksforgeeks.org/parameter-passing-techniques-in-c-cpp/
推荐阅读
- animation - 如何在 Apple Watch 上制作矢量图形动画?
- c# - Unity3D - 为什么我的对象每秒不移动每一帧
- android - jetpack compose 中禁用但可点击的开关
- android - 将国家代码 ISO alpha-3 转换为 ISO alpha-2
- javascript - 将地点的 id 作为弹出窗口中的道具转移到另一个组件
- .net - MaxScript:dotNet 运行时错误:无法创建 SSL/TLS 安全通道
- python - 如何使用 PyFCM 在 Django Python 中启用 Google Firebase 通知分析?
- amazon-web-services - 有什么办法可以限制某些用户从 s3 访问 cloudflare 缓存的视频
- c++ - 用外部常量初始化 constexpr
- java - 如何向上旋转这个手臂?