[ Goran Arandjelovic @ 08.09.2005. 21:42 ] @
Zasto ovo puca? Obratite paznju na matrix promenljivu...dolazi do problema kada pokusam da oslobodim mem. u desktruktoru...sta se desava? Ako mozete..najbolje je da iskompajlirate sa gcc-om. Koristim gcc3.3.4. Code: #include<iostream> #include<fstream> using namespace std; class field { public: field(int n, int m); ~field(); void set(int n, int m, char v); char get(int n, int m); private: char **matrix; int x,y; }; void generate_map(int density, field &rf); char random_trees(int density); int main(int argc, char *argv[]) { field pf(10,10); } field::field(int n, int m) { matrix = new char*[n-1]; for(int i=0;i<n;i++) matrix[i] = new char[m-1]; x = n; y = m; } field::~field() { for(int i=0;i<x;i++) delete[] matrix[i]; } inline void field::set(int n, int m, char v) { if((n<1 || m<1) || (n>x || m>y)) return; matrix[n-1][m-1] = v; } inline char field::get(int n, int m) { if((n<1 || m<1) || (n>x || m>y)) return(-1); return(matrix[n-1][m-1]); } void generate_map(int density, field &rf) { if(density<2) density=2; if(density>9) density=9; } char random_trees(int density) { char ret_val; fstream rnd("/dev/urandom",ios::in|ios::binary); rnd.read((char*)&ret_val,sizeof(char)); rnd.close(); if(ret_val%density==0) return('*'); return(' '); } |