我有这个问题。代码块错误: 无法转换&#st; :: pair'到' int'作为回报| 我无法在函数中返回两个值。我怎样才能做到这一点? 我也尝试构建结构,但同样的错误......
代码:
int wyszukanieKR(char **tablica, char **wzorzec)
{
pair <int, int> wspolrzedne;
int hash_wzorzec = _hash(0, 0, 9, 3, wzorzec);
int hash_tablica = 0;
for(int i = 0; i < 84-9; i++)
{
for(int j = 0; j < 13-3; j++)
{
hash_tablica = _hash(i, j, 9, 3, tablica);
if(hash_wzorzec == hash_tablica)
{
bool znalazlem = false;
for (int k = 0; k < 9; k++)
{
for (int l = 0; l < 3; l++)
{
if (tablica[k+wspolrzedne.first][l+wspolrzedne.second] != wzorzec[k][l])
break;
if(k ==9 - 1 && l == 3 - 1)
znalazlem = true;
}
}
if(znalazlem)
{
//cout<<"["<<wspolrzedne.first<<"]"<<"["<<wspolrzedne.second<<"]";
//return wspolrzedne;
}
licznik = licznik+1;
}
wspolrzedne.first++;
}
wspolrzedne.first = 0;
wspolrzedne.second++;
}
//cout<<"["<<wspolrzedne.first<<"]"<<"["<<wspolrzedne.second<<"]";
return wspolrzedne;
答案 0 :(得分:2)
您的问题不是您不能退回两件物品,而是您的退货与您的功能声明不符。您将其声明为int
,然后尝试返回pair<int,int>
。这些不一样,所以当编译器尝试返回一个时,它与另一个不匹配,并给你错误。您需要做的是选择要返回的值或将声明更改为
std::pair<int, int> wyszukanieKR(char **tablica, char **wzorzec)
您的总功能应如下所示:
std::pair<int, int> wyszukanieKR(char **tablica, char **wzorzec)
{
// Function Body
return wspolrzedne; //pair<int, int>
}
答案 1 :(得分:0)
见:
std::pair<int, int> wyszukanieKR(char **tablica, char **wzorzec)
{
/* analysis */
return std::make_pair<int,int>(pozycja_x,pozycja_y);
}
在主要内容中你可以使用:
std::pair<int,int> result = wyszukanieKR(...);
std::cout << result.first << " " <<result.second << "\n";