首页 > 解决方案 > 无法理解 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;
    }
}

标签: c++

解决方案


void player_input(char);   

您的函数定义与下面的不匹配void player_input(char size[][3])。在执行之前,编译器会尝试将每个函数调用与其适当的定义相匹配。它失败了,因为它只看到上面的一个(它需要一个字符),与player_input(arr);2D arrarray匹配char arr[3][3]

您可以修改上面的行以使其工作:

void player_input(char[3][3]);

由于您使用的是 C++,因此您应该放弃静态数组并考虑使用现代 C++ 容器之一,例如std::vector.


推荐阅读