0

我正在用 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;
}

谢谢

4

2 回答 2

1
typedef const int (*matrix_ptr)[8];

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

于 2012-01-30T22:27:02.657 回答
0

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

于 2012-01-30T22:31:28.217 回答