C++ 这个函数的参数是? bool水平检查1(字符串**板){ 对于(int行=7;行>=0;行--){ 对于(int col=0;col

C++ 这个函数的参数是? bool水平检查1(字符串**板){ 对于(int行=7;行>=0;行--){ 对于(int col=0;col,c++,C++,我猜错误来自调用horizontal\u Check1函数的地方。可能您只传递了字符串实例,而不是它的双指针 bool horizontal_Check1(string** board){ for(int row=7; row>=0; row--){ for(int col=0; col<=7; col++){ if(board[row][col]=="|X|"&&board[row][col+1]=="|X|&q

我猜错误来自调用
horizontal\u Check1
函数的地方。可能您只传递了
字符串
实例,而不是它的双指针

bool horizontal_Check1(string** board){
for(int row=7; row>=0; row--){
    for(int col=0; col<=7; col++){
        if(board[row][col]=="|X|"&&board[row][col+1]=="|X|"&&board[row][col+2]=="|X|"&&board[row][col+3]=="|X|"){
            return 1;
        }
    }
}
return 0;}
调用代码应该是这样的

string str = "random string";
horizontal_Check(str); // error

你打算把二维数组的字符串传递给C样式的函数。但是用C++,我会这样走,

string str[...][...];
// need conversion from array `string[...][...]` to pointer `string **`
horizontal_Check(&str[0]);
bool水平检查1(标准::向量和板)
{
...
}

您如何称呼它?简单的解决方法是使用
std::vector
然后通过引用传递
bool horizontal\u Check1(std::vector&board)
或std::array,如果您有固定的维度,请为其参数指定一个指针数组。欢迎使用Stack Overflow。请花时间浏览并参考中的材料,了解您可以在此处询问的内容和方式。发布数组尤其重要。数组不是指针。2D字符串数组不是
字符串**
。即使在衰减之后,类型也会以
string(*)[N]
,其中N是第二维度。非常感谢:D@chris我注意到指针不是数组,所以我提出的
string[][]类似于string**
not
string[][]是string**
。我就是想不出其他表达式。不管怎样,你声称要编译的东西是不可编译的。我将string**改为string[][],我的错误是,当我调用函数时,我使用了
horizontal\u Check1(string[]])
而不是
horizontal\u Check1(string)
,谢谢@xvnm
bool horizontal_Check1(std::vector<std::vector<std::string>>& board)
{
    ...
}