这个函数的参数?

时间:2018-05-04 06:22:59

标签: c++

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;}

当我尝试构建此函数时,它显示以下错误:

  

错误C2664:&#39; horizo​​ntal_Check1&#39; :无法从&#39; std :: string&#39;转换参数1到&#39; std :: string **&#39;

     

没有可用于执行此转换的用户定义转换运算符,或者无法调用运算符

1 个答案:

答案 0 :(得分:1)

我猜这个错误来自你调用horizontal_Check1函数的地方。也许你只传递了一个string实例,而不是它的双指针?

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

调用代码应该是这样的

string str[...][...];
// need conversion from array `string[...][...]` to pointer `string **`
horizontal_Check(&str[0]);

您打算将二维字符串数组传递给C风格的函数。但是对于C ++,我会这样做,

bool horizontal_Check1(std::vector<std::vector<std::string>>& board)
{
    ...
}