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

Kako pristupiti konstruktoru?!?

[es] :: C/C++ programiranje :: Kako pristupiti konstruktoru?!?

[ Pregleda: 2621 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

MixMaster

Član broj: 10076
Poruke: 323
195.66.174.*



+32 Profil

icon Kako pristupiti konstruktoru?!?10.05.2005. u 16:45 - pre 230 meseci
Dakle proble je sledeci, pri kompajliranju mi se prikazu sledece greske:
Could not find a match for 'osoba::osoba()' za trecu liniju koda u main() i
Call of nonfunction - za cetvrtu liniju koda u main() f-iji.

Sta je problem? Znam da napravim klasu koja bi zauzela prostor na steku (pristupanje je sa tackom), kada pokusam ovo, tj. zauzimanje na slobodnom skladistu sa new (koji vraca pokazivac) ne mogu da skonam sta dalje. Boli me glava, pomagajte.
Dakle hocu da mi konstruktor postavi default vrijednost, i da to bude odradjeno u main() funkciji.

Code:

#include <iostream.h>

class osoba{
        private:
            int godine;
        public:
           osoba(int);
           ~osoba() { cout<<"\nDestruktor...\n"; };

           void postaviGodine(int god) { godine = god; };
           int vratiGodine() { return godine; };
        };

osoba::osoba(int a)
        {
         godine = a;
         cout<<"\nKonstruktor...\n";
         }

void main()
     {
      int a;
      cin>>a;
      osoba *Mladen = new osoba;
      Mladen->osoba(a);     //Ovdje nesto nije dobro, kako da pristupim konstruktoru?

      cout<<"\nMladen ima "<<Mladen->vratiGodine()<<" godina.\n";

      Mladen->postaviGodine(22);

      cout<<"\nMladen ima "<<Mladen->vratiGodine()<<" godina.\n";

      delete Mladen;
      }

Vidi bako, DžEDAJ!
 
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: Kako pristupiti konstruktoru?!?10.05.2005. u 17:03 - pre 230 meseci
nemam sada vremena da istražujem detaljnije (kasnim), ali sam
primetio da kod:

Citat:

osoba *Mladen = new osoba;


nemas adgument za kreiranje objekta

treba:
Citat:

osoba *Mladen = new osoba( neki_int );

 
Odgovor na temu

ljudi
Zg

Član broj: 16038
Poruke: 56
*.adsl.net.t-com.hr.



Profil

icon Re: Kako pristupiti konstruktoru?!?10.05.2005. u 17:15 - pre 230 meseci
uz moje skromno znanje pokusat cu odgovorit...

u liniji:
Code:

      osoba *Mladen = new osoba;

dinamicki alociras memoriju za objekt tipa osoba.. e tu nastaje i problem. definirao si konstruktor osoba(int), a nisi naveo parametar objektu pa pokusava pronaci konstruktor osoba() koji ne postoji.
inace razredi sami imaju podrazumjevani konstrukor osim ako ne definiras sam konstruktor. tada ces morat i sam definirati podrazumjevani konstruktor odnosno osoba().
recimo, linija:
Code:

      osoba *Mladen = new osoba(22);

bi i stimala.

druga stvar... konstruktor se poziva sam pri nastajanju objekta. nema potrebe za linijom:
Code:

      Mladen->osoba(a);


jos jedan savjet koji sam pokupio iz knjiga... konstruktor je moguce pisati i ovako:
Code:

osoba::osoba(int a) : godine(a)
{
         cout<<"\nKonstruktor...\n";
}

ako se dobro sjecam, inicijalizacijaska lista se izvrsava prije ulaska u tijelo konstruktora...
tako se u tvojem primjeru inicijalizacija obavlja 2 puta. prvi put prevoditelj sam umetne kod za inicijalizaciju pa se clanovi inicijaliziraju u inicijalizacijaskoj listi i drugi put u tijelu konstruktora.


 
Odgovor na temu

MixMaster

Član broj: 10076
Poruke: 323
*.cis.cg.ac.yu.



+32 Profil

icon Re: Kako pristupiti konstruktoru?!?10.05.2005. u 17:35 - pre 230 meseci
OK, hvala momci. Ajde jos par pitanja.
Znam da se konstruktor poziva automatski pri kreiranju objekta, ali kako da mu proslijedim vrijednost "a", koju ja unosim prije kreiranja tog objekta?
Kada se radi sa stekom ide
Code:

osoba::osoba(a):godine(a)
                  {
                   cout<<"Konstruktor";
                   }

a u main() f-iji kada se kreira novi objekat ide
Code:
osoba Mladen(20);

jeli tako?
Ako se ne prosledjuje parametar nikakav ide
Code:
 osoba Mladen; 

Dakle, to je ok. Sada mi treba za ovaj drugi slucaj prosledjivanje parametara!?

Jos ovo. Sa
Code:

osoba *Mladen = new osoba(10);

mi u stvari govorimo, zauzmi memoriju za deset objekata velicine Mladen (tipa osoba) i vrati pokazivac? Jesam li blizu?
Vidi bako, DžEDAJ!
 
Odgovor na temu

Buffy
Stanko Culaja
Sipovo, BiH

Član broj: 45310
Poruke: 312
*.teol.net.



Profil

icon Re: Kako pristupiti konstruktoru?!?10.05.2005. u 21:36 - pre 230 meseci
Nisi blizu,jer to govori:
Zuzmi memoriju za objekat klase osoba i predaj konstruktoru vrjednost 10,tako
da ce konstruktor promjenljivoj clanici godine dati vrijednost 10.
Pozdrav!

 
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: Kako pristupiti konstruktoru?!?11.05.2005. u 17:02 - pre 230 meseci
Code:

osoba *Mladen = new osoba(10);
mi u stvari govorimo, zauzmi memoriju za deset objekata velicine Mladen (tipa osoba) i vrati pokazivac? Jesam li blizu?


Pobrkao si zagrade ;)

Code:

char *mladen = new char[10];

vraca rezervisanih 10 char-ova, kod:

Code:

char *mladen = new char(10);

vrednost *mladen je 10.


 
Odgovor na temu

MixMaster

Član broj: 10076
Poruke: 323
*.cis.cg.ac.yu.



+32 Profil

icon Re: Kako pristupiti konstruktoru?!?11.05.2005. u 22:19 - pre 230 meseci
Znaci u tome je caka!? Odlicno. E ovakvi odgovori mi trebaju. Jos jednom se zahvaljujem svima vama!
Vidi bako, DžEDAJ!
 
Odgovor na temu

manman
BG

Član broj: 55717
Poruke: 90
*.scnet.yu.



+4 Profil

icon Re: Kako pristupiti konstruktoru?!?12.05.2005. u 00:47 - pre 230 meseci
Jebi ga kad si na Marsu. ha, ha.
mala shala.
 
Odgovor na temu

vlada_dj
Vladimir Djokic
Beograd

Član broj: 39483
Poruke: 9
*.proxy.astra-net.com.



Profil

icon Re: Kako pristupiti konstruktoru?!?19.05.2005. u 15:57 - pre 230 meseci
Posto vidim da si pocetnik u objektno orjentisanom programiranju preporucio bih ti da obavezno prenadjes i procitas knjigu "Objektno orjentisano programiranje u jeziku C++" od Dragana Miliceva!!!
Dobro prouci tu knjigu jer je strasno dobro napisana!!!
U njoj su ti objasnjeni svi osnovni koncepti objektno orjentisanog programiranja zajedno sa jezikom C++.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako pristupiti konstruktoru?!?

[ Pregleda: 2621 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

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