Posted By: medvidek (Zase za polarnim kruhem) on 'CZprogram' Title: Re: Dvourozmerne pole objektu v C++ Date: Sun Jul 27 22:28:55 2003 JerryIII se nam zase rozjel ;) Fascinuje me,... ale ne, to by patrilo na jiny board. Kazdopadne s tim copy ctorem je zcela mimo misu. > potrebuji nadefinovat a predavat dvourozmerne pole objektu, zkousel jsem > neco > pole[i][j] = k; Cituji http://gotw.ca/gotw/086.htm: In C (and C++), an expression of the form x[y], where one of x and y is a pointer type and the other is an integer value, always means *(x+y). Odskok stranou - na to URL se doporucuju podivat vsem milovnikum C++ (a nejen na 086) Cili to tvoje prepises jako (*(pole+i))[j] a dal jako *(*(pole+i))+j) Z toho je videt, ze prekladac vezme pointer pole, "posune se" v pameti o i prvku a hodnota v tom miste pameti je hodnota toho vyrazu pole[i]. V nasem pripade je ta hodnota zase pointer. Cili se podiva, kam ukazuje (a v Tvem pripade ukazuje nekam do pryc), "posune se" v pameti od toho mista kam ukazuje o j prvku a tam sahne pro hodnotu. Cili dvourozmerne pole v C/C++ defacto neexistuje a je vzdy vytvoreno jako 1D pole pointeru na radky nebo sloupce (ktere jsou pak samozrejme zase 1D pole) > Bod **pole = (Bod **) new Bod[3][3]; Tato alokace je blbe. Spravne je Bod** pole; pole = new Bod*[pocet_radku]; // nalokujeme pointery na radky for (int i = 0; i < pocet_radku; ++i) { pole[i] = new Bod[pocet_sloupcu]; // naalokujeme i-ty radek } Zbytek by Ti pak mel fungovat. > dammie medvidek -- Taky vam uz odkvetaji narcisy? (signatura aktualizovana 3. 7. 2003)