从C++中的开关情况返回二维数组
Returning a two-dimensional array from a switch case in C++
我正在用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数组并将其传递回调用者。如果是后一种情况,那么调用者现在负责释放内存。
相关文章:
- 如何在不销毁对象的情况下返回对象列表
- 如何在不使用临时变量的情况下取消引用返回指针的函数的返回值?
- G++ 编译器是否在未使用返回值的情况下将 constexpr 函数视为常规函数?
- 如何在没有返回值的情况下使用(特征)unaryExpr 和 lambda 函数?
- C++箭头运算符 (->) 是否在所有情况下都返回左值?
- 使用 Google 基准测试时返回值会发生什么情况?
- 我们可以在没有新实例化的情况下声明一个抽象方法来返回抽象超类中的子类对象吗
- UDP 套接字 select() 在某些情况下无延迟(超时)返回 1
- 串行读取()不会在没有数据接收的情况下返回值
- 如何在没有运算符>>的情况下从字符串流返回下一个令牌?
- 为什么在某些情况下从函数返回类型中删除 cv 限定符?
- 如何在不使用 STL 的情况下从函数反转字符串后返回字符串C++?
- 如何在不返回 C++ 值的情况下退出 int 函数?
- 如果在开关情况下不匹配,为什么此函数返回 ASCII 值?
- 在这种情况下,如何返回对数组中元素的引用?
- 警告:返回对临时 - 奇怪情况的引用(对 Rvalue 的澄清)
- lower_bound 在 C++ STL 中返回迭代器,即使元素不存在也是如此.如何避免这种情况?
- 在开关情况下返回布尔值
- 谷歌嘲笑!我的测试出错.默认情况下,呼叫将返回调用
- 从C++中的开关情况返回二维数组