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**
notstring[][]是string**
。我就是想不出其他表达式。不管怎样,你声称要编译的东西是不可编译的。我将string**改为string[][],我的错误是,当我调用函数时,我使用了horizontal\u Check1(string[]])
而不是horizontal\u Check1(string)
,谢谢@xvnm
bool horizontal_Check1(std::vector<std::vector<std::string>>& board)
{
...
}