我正在用cocos2dx编写一个游戏,而我正在尝试重构一个被调用几次的方法。我想从一个cartype
的枚举中返回一个二维数组我怎样才能得到类似下面的内容?
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;
}
谢谢
答案 0 :(得分:1)
typedef const int (*matrix_ptr)[8];
答案 1 :(得分:0)
为什么使用数组?您应该使用其中一个STL容器,例如矢量。无论哪种方式,C ++中的2D int数组基本上都是指向int的指针。函数的调用者需要在堆或堆栈上提供已分配的2D数组,并将其作为输入/输出参数传递,或让“callee”(此函数)在堆上分配2D数组并将其传递回呼叫者。如果是后一种情况,那么调用者现在负责释放内存。