Problem z deklaracją tablicy wielowymiarowej.
Ostatnio zmodyfikowano 2014-01-27 08:33
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. |
|
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: 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 ) { 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; } |
|
« 1 » |