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

Friend funkcija neke klase, problem.

[es] :: C/C++ programiranje :: C/C++ za početnike :: Friend funkcija neke klase, problem.

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.smin.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Friend funkcija neke klase, problem.30.08.2006. u 09:01 - pre 214 meseci
Imam problem sa deklaracijom frienda klase. U knjizi pise da friend ima pravo pristupa private clanovima klase, a ovo opet nece da radi. Evo o cemu se workuje:
Code:

class str {
public:
friend istream& operator>>(istream &in, str &s);
/* ....... */
};

/* ......*/
istream& operator>>(istream &in, str &s) //ova f-ja treba da bude friend
{
//isprazni s
s.data.clear();

//odvoj razmake sa leva
char zn;
while(in.get(zn) && isspace(zn));

//citaj sve dok ne dodjes na razmak i upisi u S
do s.data.push_back(zn);
while(in.get(zn) && isspace(zn));
in.unget();

return in;
}

Kaze kompajler da ne moze da se pristupi clanu data posto je isti deklarisan kao private podatak.
Pa kako da omogucim pristup?

[Ovu poruku je menjao toxi_programer dana 30.08.2006. u 11:29 GMT+1]
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.55.*



+9 Profil

icon Re: Friend funkcija neke klase, problem.30.08.2006. u 09:48 - pre 214 meseci
Pa jesi ti uopće dodao taj friend u klasi??

friend istream& operator>>(istream &in, str &s);

Ako to ne pali probaj odmah napisati to tijelo u samoj klasi.
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.smin.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Friend funkcija neke klase, problem.30.08.2006. u 10:29 - pre 214 meseci
Pa jesam deklarisao kao friend:
Code:

class str {
public:
friend istream& operator>>(istream &in, str &s); //evo
/* ....... */
};

i zatim sam definisao f-ju operator>>(bla bla).
Medjutim moram da tu f-ju napisem van tela klase, dakle da f-ja ne bude funkcija clanica klase ali da ima pristup private podacima.
 
Odgovor na temu

itf
Zagreb

Član broj: 59794
Poruke: 993
161.53.55.*



+9 Profil

icon Re: Friend funkcija neke klase, problem.30.08.2006. u 13:42 - pre 214 meseci
Ta friend funkcija i nije članica klase bez obzira napisao ti njeno tijelo unutar klase ili ne. Kad bi bila članica onda ti friend ne bi ni trebao jer samim time što je ta funkcija članica te klase ona odmah ima pristup i svim njenim članovima. Kvalifikator friend se općenito koristi da ti u klasi navedeš kojim vanjskim (uglavnom globalnim) funkcijama klasa dopušta pristup svim svojim članovima.
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.smin.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Friend funkcija neke klase, problem.30.08.2006. u 16:04 - pre 214 meseci
Pa da znam to. Nego ovako:
Sve radi lepo ako je operator>>(bla) definisan unutar klase( uz kljucnu rec friend u ovom slucaju fja nece biti clanica klase), medjutim ako se definisanje fje izvrsi van tela klase kompajler javlja da je ta fja neodredjena. Ako promenim ime fje, dakle da bude obicna fja a ne fja operatora onda u oba slucaja sve radio ok... ???
 
Odgovor na temu

android~paranoid

Član broj: 81947
Poruke: 211
*.041net.co.yu.



Profil

icon Re: Friend funkcija neke klase, problem.31.08.2006. u 00:15 - pre 214 meseci
Ako operatorska f-ja nije clanica klase onda mora za jedan parametar imati objekat,
mozda da probas da promenis mesta parametrima (referenca str &s da prva bude)
mozda tako mora. Ovako deluje logicno kako si napisao.
Mislim, šta reći !
 
Odgovor na temu

1jedini
Dejan Milosavljevic
BG

Član broj: 102721
Poruke: 74
212.200.118.*



Profil

icon Re: Friend funkcija neke klase, problem.31.08.2006. u 10:59 - pre 214 meseci
Sve je u redu.
Koji kompajler koristis, i koju verziju?

GCC 3.4.2 ne prijavljuje nikakvu gresku.

Probaj da pre class str stavis istream& operator>>(istream &in, str &s);

Znaci ovako nesto:

Code:

 istream& operator>>(istream &in, str &s);  //!< forward deklaracija
 class str
 {

  //...
 };


Malko nepotrebno, ali ne skodi.


Ako to ne pomogne, menjaj (verziju) kompajler(a).


Nezaboravi #include <fstream> i #include <string>, pa using namespace std;

Ako si sve to vec stavio onda ti definitivno kompajler ne valja, lose namesten ili mator ...
AKA DDMM
 
Odgovor na temu

toxi_programer
Nemanja Todić
Beograd

Član broj: 104396
Poruke: 464
*.smin.sezampro.yu.

Sajt: www.articles411.com


+8 Profil

icon Re: Friend funkcija neke klase, problem.01.09.2006. u 10:43 - pre 214 meseci
@1jedini
sve sam potrebne fajlove ukljucio, using namespace std i ostalo je sve ok.
Ovaj primer sa prototipom nisam pokusao da kompajliram ali ce biti greska sigurno jer bi koristio tip STR pre nego sto ga definisem a to ne moze.
@android~paranoid
Koristim VS 6.0. Prvi parametar se odnosi na vrednost levo od operatora, drugi na desnu vrednost. Ja sam hteo da omogucim npr:
str ime;
cin >> ime;
Ako bi im promenio mesta pisalo bi se:
ime >> cin // ili tako nesto....
-----------------------------------------------------------------------------------------------------------
Da, sada mislim da je kompajler u pitanju. Otvorim ja workspace malo pre stavim da se kompajlira program i ne prijavi ni jedan error ni jedan warning, a trebalo bi da bude jedan warning jer main nije vracala vrednost. Iskompajliram ponovo, nista nisam menjao i "cvrc" opet stara prica... Reinstal bi trebalo da pomogne?
 
Odgovor na temu

android~paranoid

Član broj: 81947
Poruke: 211
*.041net.co.yu.



Profil

icon Re: Friend funkcija neke klase, problem.01.09.2006. u 19:19 - pre 214 meseci
Citat:

Da, sada mislim da je kompajler u pitanju. Otvorim ja workspace malo pre stavim da se kompajlira program i ne prijavi ni jedan error ni jedan warning, a trebalo bi da bude jedan warning jer main nije vracala vrednost. Iskompajliram ponovo, nista nisam menjao i "cvrc" opet stara prica... Reinstal bi trebalo da pomogne?


Isto imam VS 6.0, i kod mene ne prijavi ta upozorenja, ali mislim da je to tako i predvidjeno da
prijavi recimo prvi put kad kompajliras a svaki sledeci da ih zanemari.



Mislim, šta reći !
 
Odgovor na temu

[es] :: C/C++ programiranje :: C/C++ za početnike :: Friend funkcija neke klase, problem.

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

Postavi temu Odgovori

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