C++ 从C+中的开关盒返回二维数组+;

C++ 从C+中的开关盒返回二维数组+;,c++,multidimensional-array,switch-statement,cocos2d-x,C++,Multidimensional Array,Switch Statement,Cocos2d X,我正在用cocos2dx编写一个游戏,我正在尝试重构一个被多次调用的方法。我想从vehicletype枚举返回一个二维数组 我怎样才能让下面这样的东西工作 int Vehicle::getVehicle(VehicleTypes vehicletypes) { int vehicle[8][8] = {0}; switch (vehicleType) { case Car: // --- ARRAY 1 ------ vehicle

我正在用cocos2dx编写一个游戏,我正在尝试重构一个被多次调用的方法。我想从vehicletype枚举返回一个二维数组

我怎样才能让下面这样的东西工作

int Vehicle::getVehicle(VehicleTypes vehicletypes)
{

int vehicle[8][8] = {0};

switch (vehicleType) {
    case Car:
            // --- ARRAY 1 ------

            vehicle = {
                { 0,0,0,0,0,0,0,0 },
                { 0,0,1,2,5,8,0,0 },
                { 0,0,5,3,4,5,0,0 },
                { 0,0,0,6,0,7,0,0 },
                { 0,0,0,0,0,0,0,0 },
                { 0,0,0,0,0,0,0,0 },
                { 0,0,0,0,0,0,0,0 },
                { 0,0,0,0,0,0,0,0 },
            };
            break;
    case Bus:
        {
            // --- ARRAY 2 ------

            Vehicle = {
                { 0,0,0,0,0,0,0,0 },
                { 0,0,0,0,1,2,0,0 },
                { 0,0,3,4,5,0,0,0 },
                { 0,0,6,8,7,0,0,0 },
                { 0,0,0,0,0,0,0,0 },
                { 0,0,0,0,0,0,0,0 },
                { 0,0,0,0,0,0,0,0 },
                { 0,0,0,0,0,0,0,0 },
            };
            break;
        }
    default:
        break;
    }

return vehicle;
}
谢谢

typedef const int (*matrix_ptr)[8];

演示:

为什么要使用阵列?您应该使用一个STL容器,例如向量。无论哪种方式,C++中的2D int数组基本上是指向int指针的指针。函数的调用方需要在堆或堆栈上提供已分配的2D数组并将其作为in/out参数传递,或者让“被调用方”(此函数)在堆上分配2D数组并将其传递回调用方。如果是后一种情况,则调用者现在负责释放内存。

如果在总线情况中使用正确的变量名,可能会有所帮助<代码>车辆!=vehicle。是否要求返回的数组可修改?在修复上述问题后:看起来像是的几乎完全相同。不能将int x[][]返回为int。否,“2D int array”是一个衰减为指向一维int数组指针的数组
int[n][m]
不会衰减为
int**
。好吧,到目前为止,我在这个开发中只使用了c/c++(我所知道的!!),因为我使用的是cocos2dx。我在VisualStudio中进行开发,让一切正常工作,然后在mac上将所有东西都移动到xcode,并推到iphone上。STL容器在mac上仍然可以兼容吗?也许是时候找到啦啦队队员了,我可以让他们用这个。尽管使用继承重写可能会更好。