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

Pomoc oko klasa-kreiranje niza objekata

[es] :: C/C++ programiranje :: Pomoc oko klasa-kreiranje niza objekata

[ Pregleda: 2211 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ChildInTime
BiH

Član broj: 52180
Poruke: 50
*.dlp208.bih.net.ba.



Profil

icon Pomoc oko klasa-kreiranje niza objekata19.07.2006. u 16:10 - pre 216 meseci
Imam par pitanja...
Interesuje me kako inicijalizirati niz objekata neke klase,koje nemaju default-ne konstruktore.
Evo na primjer ako imamo neku jednostavnu klasu:

Code:

class Student
{
 private:
  char Ime[20];
  int Index;
 public:
  Student(char *ime,int index)
 {
  strcpy(Ime,ime);
  Index=index;
 }
  char*GetIme(){ return Ime; }
  int GetIndex() { return Index; }
  void SetIme(char *ime) { strcpy(Ime,ime);}
  void SetIndex(int index){ Index=index; }
  void Ispis(){ cout<<"Ime: "<<Ime<<"\nIndex: "<<Index<<endl;} 
};



kako sad da u main() napravim neki niz od npr 3 studenta i na primjer da unesem za njih podatke,znaci da inicijalizujem preko konstruktora.Znam da to treba uraditi naravno u petlji i da se treba nekako koristiti dupli pokazivac
na klasu..al ne mogu da sad odgonetnem kako...

Druga stvar,kako je moguce recimo da uradim ovo (u main()) npr

Code:

Student("Neko",12311)


a da ne javi gresku.Sta se tu u stvari dogodilo? Znam da ako hocu da kreiram neki objekat pozivam njegov konstruktor,konkretno u ovom slucaju bi bilo

Code:

Student S("Neko",12311)


Kako je ovo predhodno moguce?

Imam jos jedno pitanje ako mognete mi odgovoriti..posto se tek prvi put susrecem sa ovim radi se o izuzecima

Recimo da hocu da napravim izuzetak u slucaju da je na primjer broj indexa veci od 15000.Uradim to ovako
Code:

class Greka{}; //klasa za izuzetak

Imam npr. u main() sljedece:

Code:

void main()
{
 Student S("Neko",12443); 
 int index;
 cout<<"Unesite novi broj indexa: ";
 cin>>index;

 try
 {
  S.SetIndex(index);
  S.Ispis();
 }
 catch(Greska)            // kako se moze tek tako samo ime klase napisati,
 {                             // jel se to inace tako radi kod izuzetaka,
   cout<<"Greska...\n"; // znaci kako to da mogu napisati catch(Greska) */   
 }   
}


gore bi naravno izmjenio funkciju SetIndex:

Code:

void setIndex(int index)
{
 if(index>15000) throw Greska();  //  kako i ovo mogu da napisem jeli ovo 
   else                                     //   konstruktor ili nesto drugo,
    Index=index;                        //   znaci kako da samo stoji Greska()                                                      



Izvinite ako su pitanja pomalo glupa,al posto ovo tek ucim nije mi skroz jasno..
Ako mozete molim vas da mi pomognete,posto mi treba brzo,za 1-2 dana.

Hvala unaprijed.

Pozdrav.






Maybe one day I'll be na honest man
Up till now I'm doing the best I can...
 
Odgovor na temu

Kretosh
pol:muski
Tranqiliti

Član broj: 57704
Poruke: 37
82.208.233.*



Profil

icon Re: Pomoc oko klasa-kreiranje niza objekata19.07.2006. u 22:32 - pre 216 meseci
Sto se tice prvog pitanja ne znam odgovor ali sigran sam da bi bilo bolje u svakom slucaju da klasi ipak das konstrukto bez parametara koji obavlja default inicijalizaciju.

Odgovor na drugo i trece pitanje je prakticno isti-nema nista cudno u tome sto ces napisati Student("Pera",1) -jednostavno govoris kompajleru da napravi objekat klase Student i parametrima upucujes koji konstruktor da se koristi.Ovo mozes uraditi za svaki tip objekta,kada bi napisao int() napravio bi integer variablu sa default vrednoscu 0 ili int(30) -int sa vrednoscu navedenom kao parametar.Naravno ovakvim objektima se kasnije ne mozes direktno obratiti pa moras paziti sta radis ako ovi objekti zauzimaju resurse(memoriju).

Kada napises catch(Greska) -govoris da se na podrucju try-a trazi objekat klase Greska,a kada uradis throw Greska() ti zaista pozivas konstruktor za objekat greska i tako pravis objekat te klase na odredjenoj lokaciji koja ce kasnije biti "pretrazivana" kroz try.
Dovidjenja,prijatno.
 
Odgovor na temu

ChildInTime
BiH

Član broj: 52180
Poruke: 50
*.dlp476.bih.net.ba.



Profil

icon Re: Pomoc oko klasa-kreiranje niza objekata20.07.2006. u 14:33 - pre 216 meseci
Citat:
Kretosh: Sto se tice prvog pitanja ne znam odgovor ali sigran sam da bi bilo bolje u svakom slucaju da klasi ipak das konstrukto bez parametara koji obavlja default inicijalizaciju.


Pa da mi ne treba konstruktor sa parametrima ne bi ni postavljao ovo pitanje...

Sto se tice ovih ostalih odgovora hvala,skontao sam.
Pozdrav.
Maybe one day I'll be na honest man
Up till now I'm doing the best I can...
 
Odgovor na temu

radoica

Član broj: 12972
Poruke: 158
*.yubc.net.



+3 Profil

icon Re: Pomoc oko klasa-kreiranje niza objekata20.07.2006. u 16:03 - pre 216 meseci
Code:

Student** studenti = new Student*[3];
for (int i = 0; i < 3; i++) {
    // ovde procitas char*, int
    studenti[i] = new Student(// ovde upises);
}


Kada hoces da oslobodis memoriju moras ovako

Code:

for (int i = 0; i < 3; i++) {
    delete studenti[i];
}
delete[] studenti;

 
Odgovor na temu

ChildInTime
BiH

Član broj: 52180
Poruke: 50
*.dlp17.bih.net.ba.



Profil

icon Re: Pomoc oko klasa-kreiranje niza objekata23.07.2006. u 14:29 - pre 216 meseci
@radoica
Uspio sam skontati ali u svakom slucaju tebi hvala i ostalima.
Pozdrav.
Maybe one day I'll be na honest man
Up till now I'm doing the best I can...
 
Odgovor na temu

[es] :: C/C++ programiranje :: Pomoc oko klasa-kreiranje niza objekata

[ Pregleda: 2211 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

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