Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Index clana niza struktura

[es] :: C/C++ programiranje :: Index clana niza struktura

[ Pregleda: 3148 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

SashaX

Član broj: 50542
Poruke: 65
*.crnagora.net.

Sajt: www.eipix.com


Profil

icon Index clana niza struktura28.03.2005. u 18:27 - pre 232 meseci
Imam jedno pitanje:

Imam klasu:

Code:

class KLASA
{
     // ...
}


i u programu deklarisan niz tih klasa:

Code:

KLASA k[10];


E sad pitanje je kako da dobijem Index nekog clana u nizu na pr. k[5] tj. da mi se taj index vrati u int, mislim da me razumete.

Znaci ako imam neku funkciju unutar klase:

Code:

void KLASA :: Funkcija()
{
      // int i = INDEX CLANA NIZA
}


treba da u toj funkciji dobijem index tog clana niza.
Da li je to moguce ili moram da na primer deklarisem neki clan klase IND u koji cu da stavim index
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.in-addr.btopenworld.com.



+4 Profil

icon Re: Index clana niza struktura28.03.2005. u 18:52 - pre 232 meseci
Ako sam te dobro razumeo, ti hocesh "inverznu" metodu - na osnovu adrese instance da nadjesh njen index u nizu instanci.

Imash mali milion nachina da to izvedesh.

U tvom sluchaju, sa statichki definisanin nizom, najprostiji nachin je :

Code:
#define Klasa_Index(instance) (instance - &k[0])


...koji cesh pozvati u svojoj funkciji kao :
Code:

void KLASA :: Funkcija()
{
      int i = Klasa_Index(this);
}


Ali, ovo ti je sigurno najloshiji nachin.
Za takvu vrstu cross-referencinga umesto statichkog niza koristi neku kolekciju koja na osnovu pointera na instancu mozhe da vrati indeks u kolekciji.
Ili obezbedi da ti klasa pri kreiranju prima u konstruktoru indeks u nizu pod kojim je kreirana (shto podrazumeva dinamichko kreiranje instanci)
 
Odgovor na temu

SashaX

Član broj: 50542
Poruke: 65
*.crnagora.net.

Sajt: www.eipix.com


Profil

icon Re: Index clana niza struktura28.03.2005. u 19:53 - pre 232 meseci
Kapiram.

Tako sam i mislio, da dodam jos jednu varijablu u klasu u koju cu upisati index, ranije sam radio tako sto sam proveravao za svaki clan niza da li im se adresa poklapa sa adresom te konkretne instance (this), ali cini mi se da je ovo los nacin. U svakom slucaju probacu nesto.

Hvala jos jednom ;)
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.nat-pool.po.sbb.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Index clana niza struktura28.03.2005. u 20:33 - pre 232 meseci
Nisam siguran da sam razumeo, ali recimo, sve VCL klase
imaju 'Tag' property, koji je nista drugo nego obican integer.

To znaci da kada imas gomilu objekata na formi, mozes
na primer da svim TCheckBox-ovima dodelis isti Tag, pa onda
da kroz petlju radis bilo sta sa njima.

U ovom primeru kroz petlju ih sve cekiras, pri cemu ne moras da
ih fizicki prozivas jedan po jedan.

Code:

// UNTESTED !
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   for ( int i = 0; i < ComponentCount; i++ )
   {
      TCheckBox* CB = dynamic_cast<TCheckBox*>( Controls[i] );
      if ( CB && CB->Tag == 1 ) CB->Checked = true;
   }
}


Pozdrav.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Index clana niza struktura

[ Pregleda: 3148 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.