[ 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