错误 C2440:"返回":无法从"int [2]"转换为"int (&&)[2]"

Error C2440: 'return' : cannot convert from 'int [2]' to 'int (&&)[2]'

本文关键字:int C2440 转换 错误 返回      更新时间:2023-10-16

我已经有一段时间没有编程了,所以我的代码可能有点草率。该程序所做的唯一一件事就是创建一个只有左上角值true的4x4布尔网格。然后,它使用checkAdjacentFiles运行它,它应该返回与它接触的瓦片(右边的瓦片和下面的瓦片)。我得到了一个错误。我有一种感觉,这与我的向量std::vector<int[2]> checkAdjacentTiles(bool[4][4]);有关,因为int[2]。谢谢你的帮助!

#include <stdio.h>
#include <vector>
std::vector<int[2]> checkAdjacentTiles(bool[4][4]);
int main() {
    bool grid[4][4];
    grid[0][0] = 1;
    std::vector<int[2]> temp = checkAdjacentTiles(grid);
    for (int i = 0; i < (int)temp.size(); i++) {
        printf("(%i, %i)n", temp[i][0], temp[i][1]);
    }
    getchar();
    return 0;
}
std::vector<int[2]> checkAdjacentTiles(bool checkGrid[4][4]) {
    int relAdjacentSides[4][2] = { { -1, 0 }, { 0, 1 }, { 1, 0 }, { 0, -1 } };
    std::vector<int[2]> adjacentSides;
    for (int x = 0; x < 4; x++) {
        for (int y = 0; y < 4; y++) {
            for (int i = 0; i < 4; i++) {
                if (x + relAdjacentSides[i][0] >= 0 && x + relAdjacentSides[i][0] < 4) {
                    if (y + relAdjacentSides[i][1] >= 0 && y + relAdjacentSides[i][1] < 4) {
                        if (!checkGrid[x + relAdjacentSides[i][0], y + relAdjacentSides[i][1]]) {
                            bool stop = 0;
                            for (int v = 0; v < (int)adjacentSides.size(); v++) {
                                if (adjacentSides[v][0] == x + relAdjacentSides[i][0] && adjacentSides[v][1] == y + relAdjacentSides[i][1]) {
                                    stop = 1;
                                    break;
                                }
                            }
                            if (!stop) {
                                adjacentSides.push_back({ x + relAdjacentSides[i][0], y + relAdjacentSides[i][1] });
                            }
                        }
                    }
                }
            }
        }
    }
    return adjacentSides;
}
由于某种原因,我不能在向量中使用int[2]。我最终使用了std::pair<int,int>,它运行良好。谢谢jhnnslschnr。