0

私はcocos2dxでゲームを書いていますが、何度か呼び出されるメソッドをリファクタリングしようとしています。Vehicletypeの列挙型から2次元配列を返したい

次のようなものを機能させるにはどうすればよいですか?

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コンテナの1つを使用する必要があります。いずれにせよ、C++の2Dint配列は、基本的にintのポインターへのポインターです。関数の呼び出し元は、ヒープまたはスタックに割り当てられた2D配列を指定して、それをin / out引数として渡すか、「呼び出し先」(この関数)にヒープに2D配列を割り当てて、それをに戻す必要があります。発信者。後者の場合、呼び出し元はメモリの割り当てを解除する責任があります。

于 2012-01-30T22:31:28.217 に答える