从C++中的开关情况返回二维数组

Returning a two-dimensional array from a switch case in C++

本文关键字:情况 返回 二维数组 开关 C++      更新时间:2023-10-16

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

我如何才能让以下内容发挥作用??

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

演示:http://ideone.com/i1Tc2

为什么要使用数组?您应该使用一个STL容器,例如向量。不管怎样,C++中的2D int数组基本上是指向int的指针的指针。函数的调用者需要在堆或堆栈上提供一个已分配的2D数组,并将其作为入/出参数传递,或者让"被调用者"(此函数)在堆上分配一个2D数组并将其传递回调用者。如果是后一种情况,那么调用者现在负责释放内存。