c++ - 无法理解 C++ 中的语法错误
问题描述
我正在尝试用 C++ 制作井字游戏,但我的代码中出现以下错误(尚未完成)。我是否将数组正确传递给函数[错误]从'char(*)[3]'到'char'的无效转换和[错误]初始化'void player_input(char)'的参数1
#include <iostream>
using namespace std;
void draw_grid(char display[][3]){
cout<<"Board\n"<<"-------------"<<endl;
for(int x=0;x<3;x++){
for(int y=0;y<3;y++){
cout<<"| "<<display[x][y]<<" ";
}
cout<<"|"<<endl<<"-------------";
cout<<endl;
}
}
void player_input(char);
int main(){
char arr[3][3]={
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
draw_grid(arr);
player_input(arr);
draw_grid(arr);
return 0;
}
void player_input(char size[][3]){
char sign;
char number;
cout<<"X or O"<<endl;
cin>>sign;
cout<<"Choose a number\n";
cin>>number;
switch (number){
case '1':
size[0][0]=sign;
break;
case '2':
size[0][1]=sign;
break;
case '3':
size[0][3]=sign;
break;
case '4':
size[1][0]=sign;
break;
case '5':
size[1][1]=sign;
break;
case '6':
size[1][2]=sign;
break;
case '7':
size[2][0]=sign;
break;
case '8':
size[2][1]=sign;
break;
case '9':
size[2][2]=sign;
break;
}
}
解决方案
void player_input(char);
您的函数定义与下面的不匹配void player_input(char size[][3])
。在执行之前,编译器会尝试将每个函数调用与其适当的定义相匹配。它失败了,因为它只看到上面的一个(它需要一个字符),与player_input(arr);
2D arr
array匹配char arr[3][3]
。
您可以修改上面的行以使其工作:
void player_input(char[3][3]);
由于您使用的是 C++,因此您应该放弃静态数组并考虑使用现代 C++ 容器之一,例如std::vector
.
推荐阅读
- c++ - 将指针向量推入 std::map
- android - 我怎么知道我的应用是由 Google 助理打开的,而不是正常启动的
- snapchat - 具有 DAY 粒度的时间序列查询的开始时间必须是帐户时区的开始时间 (00:00:00)
- c - 在 C 中释放二维数组(检查指针是否为 NULL)
- java - 如何创建像 google play store 一样的水平动画回收视图?不常见的水平回收器view
- javascript - Stacked Area Amchart 传递动态数据
- python-3.x - 如何检查 CSV 文件是否为空并在 Python 中向其中添加数据?
- mysql - 在不选择表的情况下填充mysql中的行数的方法
- arrays - 在反应中将类添加到数组的一个元素
- microsoft-graph-api - 如何使用 microsoft graph API 从事件中获取正确的与会者响应状态?