[ alxx88 @ 09.01.2008. 16:04 ] @
//neka klasa:

class vektor
{
private:
char niz[];
public:
void fja();
};

main()
{
vektor v;
for(inti=0; i<4; i++)
cin>>v.niz;
}


I nece da pristupi privatnim clanovima klase (valjda nista ne menja sto mi je klasa templejtska).
A ne znam kako to da ispravim, al da ga ne stavljam u public...pa ako neko od dobrih ljudi ima ideju, javite sto pre, sutra imam ispit!

PLEASE!!!!
[ atko79 @ 09.01.2008. 16:21 ] @
Napisi javnu funkciju clanicu te klase koja prima za parametar ono sto zelis i vrsi setovanje varijable koju zelis.
[ Shadowed @ 09.01.2008. 16:26 ] @
Sta mislis zasto se zove private :)
Napravi metode void setNiz(char niz[]) i char[] getNiz().

PS. nisam bas C++ovac, mozda kod prve treba char[] niz :)
[ Black3maj @ 09.01.2008. 18:21 ] @
Privatnom delu klase moguce je pristupiti samo iz unutrasnjosti klase ako zelis da upises neki element mozes da napravis
f-ju koja ce da dobije kao argument niz npr.

Code:

void dodaj(const char *I)
{
       strcpy(niz,I);
}

pre ovoga si samo ucitao string ili da napravis (prijateljsku,obicno se tako pise) metodu sa preklopljenim operatorom za upis >>


Code:

friend istream& operator>> (istream& u,vektor& v)
{
                 //sad ovde mozes da pristupis privatnim delovima npr v.niz
}
[ virtualVoid @ 09.01.2008. 21:27 ] @
Iskreno, nije mi jasno kako si dosao do klasa, a da nisi naucio osnovna pravila o privatnim, javnim i protected clanovima...

Ovako ti stvari stoje. Da bi radio sa privatnim clanovima, imas 2 nacina:
1. preko konstruktora
2. preko getter i setter funkcija

1. Preko konstruktora se obicno vrsi samo inicijalizacija na neku defaultnu vrijednost i to se dogadja prilikom kreiranja objekta. U suptornom bi ti objekt imao neinicijalizirane clanove.

2. getter i setter funkcije se koriste da bi preko objekta te klase mogao pristupiti javnim clanovima, odnosno mijenjati defaultnu vrijednost. svaka getter metoda ima sljedecu sintaksu
Code:
TipPrivClana getImeMetode()const{
return privatniClan;
}

Kao sto vidis ime je dobila prema ovom clanu get (koji se i kod nas moze prevesti kao uzmi, dobavi i sl.). Sljedeca je setter funkcija sa sintaksom
Code:
void setImeMetode(TipPrivatnogaClana nekoIme){
privatniClan=nekoIme //za brojcane vrijednosti
}

za nizove karaktera (staticke) prvo moras pobrisati defaultnu vrijednost pa tek onda iskopirati novu
Code:
void setImeMetode(char[] nekoIme){
delete [] privatniNizKaraktera;
strncpy(privatniClan,nekoIme,velicinaNiza);
}

a za pristup nizu karaktera preko pointera
Code:
void setImeMetode(char* nekoIme){
delete [] pointerPrivatniClan;
pointerPrivatniClan=new char[strlen(nekoIme)+1];//+1 ide da bi mogao koristiti strcpy
strcpy(privatniClan,nekoIme);
}


Sada iz main() ides
Code:
Klasa objekt;
cout << objekt.getMetoda() << endl;

ili

objekt.setMetoda(nekiParametar);
[ Buffy @ 15.01.2008. 18:06 ] @
ja mislim da ovako moze, mada nisam odavno kucao c++:
Code:

//nije testirano
class klasa{
   private:
   //.....
   friend main;
};


e sad nisam siguran da li se stavlja operator pristupa funkciji () ili samo adresa funkcije, jer nemam kompajlera pri ruci.
Pozdrav.