Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Problem z deklaracją tablicy wielowymiarowej.

Ostatnio zmodyfikowano 2014-01-27 08:33
Autor Wiadomość
Q_Jr
Temat założony przez niniejszego użytkownika
Problem z deklaracją tablicy wielowymiarowej.
» 2014-01-26 21:51:35
Witam, mam taki problem że próbuje zadeklarować tablice:

class Chunk {
    public:
        Chunk(int[15][255][15], char); //  constructor with parameters
        int Map[15][255][15];
};
A potem jej użyć:

Chunk::Chunk(int m[15][255][15], char owner) {  // constructor
    Map = m;
}
Niestety wygląda na to że Map i m to 2 różne typy:

incompatible types in assignment of ‘int (*)[255][15]’ to ‘int [15][255][15]'
Przeczytałem już pół internetu na ten temat i większość radzi:

int (*Map)[255][15];
Niestety w dalszej części kodu dostaje podobny komunikat.
Help.
P-103289
alixir
» 2014-01-27 08:33:39
Z tablicami statycznymi nie umiem ci pomóc, ale możesz przerobić to na tablice dynamiczne :)

Wtedy przykładowy zapis wyglądł by tak:

C/C++
class Chunk {
private:
    int *** Map;
    int MapX, MapY, MapZ;
public:
    Chunk( int ***, int, int, int );
    void Show();
};

Chunk::Chunk( int *** m, int x, int y, int z ) { // constructor
    Map = new int **[ x ];
    for( int i = 0; i < x; i++ ) {
        Map[ i ] = new int *[ y ];
        for( int j = 0; j < y; j++ )
             Map[ i ][ j ] = new int[ z ];
       
    }
    MapX = x;
    MapY = y;
    MapZ = z;
    Map = m;
}

void Chunk::Show() {
    for( int i = 0; i < MapX; i++ ) {
        for( int j = 0; j < MapY; j++ ) {
            for( int k = 0; k < MapZ; k++ ) {
                std::cout << Map[ i ][ j ][ k ] << " ";
            }
            std::cout << ", ";
        }
        std::cout << std::endl;
    }
}

int main() {
    int *** tab;
   
    int tx = 2;
    int ty = 3;
    int tz = 4;
   
    tab = new int **[ tx ];
   
    for( int i = 0; i < tx; i++ ) {
        tab[ i ] = new int *[ ty ];
        for( int j = 0; j < ty; j++ )
             tab[ i ][ j ] = new int[ tz ];
       
    }
   
    for( int i = 0; i < tx; i++ )
    for( int j = 0; j < ty; j++ )
    for( int k = 0; k < tz; k++ )
         tab[ i ][ j ][ k ] = i + j + k;
   
    Chunk * obiekt;
    obiekt = new Chunk( tab, tx, ty, tz );
   
    obiekt->Show();
   
    delete obiekt;
   
    return EXIT_SUCCESS;
}
P-103302
« 1 »
  Strona 1 z 1