[ LUGOS ] c++ problemi s kazalci
Jernej Kovše
jernej.kovse na uni-mb.si
Sre Jan 6 00:07:48 CET 1999
>imam razred crka, ki mora kazat naprej na objekte istega razreda (ergo
crka)
Tole je cudno. Kako bo razred kam kazal???
>naslednji prog dela bp, samo da vse skupaj rezerviram zunaj razreda..
>
>#include <iostream.h>
>
>class crka
>public:
> char ime; // za katero crko je ta objekt
> unsigned int f; // frekvenca ponavljanja
>
> crka(char c, unsigned int i=1) { ime=c; f=i; };
> void izpisi_se(void);
> void povecaj_se(void) { f++; };
>};
>
>void crka::izpisi_se(void)
> cout << "(" << ime << ", " << f << ") \n";
>}
>
>void main() {
> crka **c; // kazalec na tabelo kazalcev == KAZALEC
NA KAZALEC NA OBJEKT TIPA CRKA..
> int all=25;
> c = new (crka*)[all]; // inicializiramo kazalce = prostor za kazalce
NAREDIS TABELO 25-TIH KAZALCEV NA
OBJEKTE TIPA CRKA
> for (int i=0; i<all; i++)
> c[i]=new crka('a'+i); // inicializiramo crke, tako da kazalci
kazejo nanje
>
> for (int i=0; i<25; i++)
> c[i]->izpisi_se();
>
> for (int i=0; i<all; i++)
> delete c[i]; // brisemo kazalce
> delete c; // brisemo tabelo NUJNO popravi v
delete [] c; Nekateri compilerji to prebavijo,
pri
drugih pa niti slucajno ni v redu.
>}
>
>jaz pa rabim kao drvesno strukturo tako da se po potrebi tabela kazalcev
>poveca (recimo all=26); kazalci v novi tabeli pa kazejo na iste crke kot
prej
>le da imamo moznost rezervitat prostor za se eno novo crko
Ahm, enkrat rezervirano tabelo je prakticno nemogoce povecati. Uporabi
povezani
seznam pointerjev na crke. V seznam bos lahko brez problema dodajal, brisal,
res pa je, da ne bo delovalo tako hitro. Tabela ni prava resitev, vsaj zdi
se mi
tako.
J.
Dodatne informacije o seznamu Starilist