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

pokazivaci na funkcije

[es] :: C/C++ programiranje :: pokazivaci na funkcije

[ Pregleda: 6568 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon pokazivaci na funkcije19.09.2002. u 00:55 - pre 232 meseci
Jednostavno kako da realizujem pokazivace na funkcije?
e pa program bi trebao da izgleda ovako nekako ali ne znam kako da ga realizujem:

struct pokazivaci{
ptr1 //pokazivac na funkciju
ptr2//pokazivac na funkciju
};

class Neka
{
.....
piblic:
void SetNumber( int i );
int GetNumber( );
};

void main ()
{
pokazivaci pok;
Neka neka;

pok.ptr1 = ...treba da mi pokaze na funkciju SetNumber
pok.ptr2 = ..treba da mi pokze na f-ju GetNumber
CreateThread (bla, 0, &pok);
}

da bi se posle negde u niti pozivale te f-je na neki fazon , recimo: sa temppok->ptr1 i da se izvrsi ta f-ja odnosno u ovom slucaju SetNumber
Kako se ovo radi?



Ako treba onda nema potrebe
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.beotel.net



Profil

icon Re: pokazivaci na funkcije19.09.2002. u 04:29 - pre 232 meseci
Code:

void (Neka::*pfnSetNumber)(int);
int (Neka::*pfnGetNumber)();
...
pfnSetNumber = Neka::SetNumber;
pfnGetNumber = Neka::GetNumber;

 
Odgovor na temu

sportbili

Član broj: 5083
Poruke: 16
*.dial.InfoSky.Net



Profil

icon Re: pokazivaci na funkcije19.09.2002. u 11:52 - pre 232 meseci

Da ne otvaram novu temu cemu uopste sluze pokazivaci na funkcije?
Moze li neki primer upotrebe?
Znam da napravim isti ali nemam ideju gde se koriste. Hvala.
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon Re: pokazivaci na funkcije19.09.2002. u 12:10 - pre 232 meseci
pa recimo kao "okidaci". barem meni za to trebaju. Kada se desi neki dogadjaj ja okinem neku funkciju.jest da postoje tajmeri i semafori ali ovo moje je malo specificno
Ako treba onda nema potrebe
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1339
*.yubc.net

ICQ: 14293955
Sajt: https://github.com/milost..


+46 Profil

icon Re: pokazivaci na funkcije19.09.2002. u 15:02 - pre 232 meseci
Citat:
sportbili:
Da ne otvaram novu temu cemu uopste sluze pokazivaci na funkcije?
Moze li neki primer upotrebe?


Pokazivaci na f-je su idealno resenje kada imas vise kofiguracija
klase koju koristis.
Npr. Imas klasu Autobus i metod Vozi()
E, sad, ako hoces da metod Vozi radi potpuno razlicite stvari
u zavisnosti od (recimo) pozicije autobusa, onda svaki
put kada se promeni to stanje (u ovom slucaju pozicija)
promenis i pointer na f-ju koja odradjuje voznju..
Time izbegavas nepregledan kod i predugacke metode
(sa raznim namenama :).
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: pokazivaci na funkcije19.09.2002. u 17:28 - pre 232 meseci
Još bolji primer su klase za menije (na ekranu). Dodeliš svakoj opciji na meniju po jedan pokazivač na funkciju i kad korisnik "klikne" na tu opciju, izvrši se odgovarajuća funkcija.

 
Odgovor na temu

sportbili

Član broj: 5083
Poruke: 16
*.dial.InfoSky.Net



Profil

icon Re: pokazivaci na funkcije19.09.2002. u 18:50 - pre 232 meseci
Koriscenje pokazivaca koje opisujete mi izgleda kao i koriscenje makroa?
Poziv funkcije zamenjujemo njenim pokazivacem? Ne bili smo mogli koristiti
odmah poziv funkcije? Still stuck.
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon Re: pokazivaci na funkcije19.09.2002. u 19:42 - pre 232 meseci
pa ne bih bas rekao da slice makroima.....zamisli da pravis jedan konacni automat ili jos bolje jezgro koje ce da radi sa konacnim automatima.....e sada kada si u nekom stanju i kada ti naidje neka poruka (dogadjaj ) ti samo lepo pozoves f-ju Pogodi, ta f-ja se automatu prosledjuje kao pokazivac...........to je jedna elegantna primena
Ako treba onda nema potrebe
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: pokazivaci na funkcije19.09.2002. u 20:16 - pre 232 meseci
Kakve veze imaju makroi sa ovime?

Pazi primer: Imaš padajući meni koji korisnik može da puni opcijama po želji. Na primer, ti mu nudiš 300 mogućih funkcija, a on kad klikne desnim dugmetom miša dobije padajući meni sa funkcijama koje je on ranije odabrao. Jednostavno napraviš dinamički niz pokazivača na funkcije i dodaješ ih (ili brišeš) onim redom kojim to radi i korisnik. Odluka koje se funkcije pozivaju po izboru opcije menija se donosi u vreme izvršavanja programa, a ne u vreme kompajliranja.
 
Odgovor na temu

sportbili

Član broj: 5083
Poruke: 16
*.dial.InfoSky.Net



Profil

icon Re: pokazivaci na funkcije19.09.2002. u 20:57 - pre 232 meseci
Citat:

Jednostavno napraviš dinamički niz pokazivača na funkcije i dodaješ ih (ili brišeš) onim redom kojim to radi i korisnik. Odluka koje se funkcije pozivaju po izboru opcije menija se donosi u vreme izvršavanja programa, a ne u vreme kompajliranja.


Palo mi je napamet da probam upravo to, odoh. :-) Hvala svima.
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon Re: pokazivaci na funkcije20.09.2002. u 21:04 - pre 232 meseci
Citat:
passenger:
Code:

void (Neka::*pfnSetNumber)(int);
int (Neka::*pfnGetNumber)();
...
pfnSetNumber = Neka::SetNumber;
pfnGetNumber = Neka::GetNumber;



e kada smo vec kod pokazivaca na f-je...ne bih da budem dosadan ali kako se posle pozivaju ove f-je? sta god da sam probao kompajler mi izbacuje gresku : term does not evaluate to a function.........
elem sve f-je na koje sam pokazivao su public pa ne bi bilo problema da se pozivaju "i preko dva brda"..........................
Ako treba onda nema potrebe
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.beotel.net



Profil

icon Re: pokazivaci na funkcije20.09.2002. u 21:37 - pre 232 meseci
U ovom slucaju konkretno (kada su to pokazivaci na member funkcije), moras da imas instancu klase, jer je drugacije naravno, besmisleno zvati je. Znaci:
Code:

class Neka
{
public:
void SetNumber( int i ) { x = i; }
int GetNumber( ) { return x; }

private:
int x;

};

void main ()
{
void (Neka::*pfnSetNumber)(int);
int (Neka::*pfnGetNumber)();

int k;

Neka* cTest = new Neka;

pfnSetNumber = Neka::SetNumber;
pfnGetNumber = Neka::GetNumber;

cout << "Unesi broj: ";
cin >> k;

(cTest ->* pfnSetNumber)(k); // Ovako se upotrebljavaju pokazivaci
k = (cTest ->* pfnGetNumber)(); // na funkcije clanice
cout << "\nUneti broj: " << k << endl;
}


Podestio bih te jos da je ->* ( kao i .* ) poseban operator.
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon Re: pokazivaci na funkcije20.09.2002. u 22:33 - pre 232 meseci
hvala , hvala odoh da probam mada mi se cini da sam probao sa
.* nesto poput
(struktura.*pok1)()
i da mi javlja da ne moze da je razvije u funkciju ili cak da mu je nepoznat pok1(!!??)
naravno pok1 je pokazivac na f-ju koja "uzima" void i vraca void
videcemo...............
thanks any way
Ako treba onda nema potrebe
 
Odgovor na temu

doomed
NS/PO

Član broj: 736
Poruke: 180
*.ptt.yu



Profil

icon Re: pokazivaci na funkcije21.09.2002. u 00:52 - pre 232 meseci
pa cekaj sada: koja je stvarno svrha pokazivaca na f-je? :))
to je dobro pitanje narocito u mom slucaju....
naime radim jedan program u MFC-u. pored mainframe-a bice i jedna nit koja ce proveravati da li se neki dogadjaj desio ( a ima ih desetak) i ako se desi on pozove odredjnu f-ju iz mainframe klase da bi osvezio prozor. Ja sam nesto kontao da pokazivace na odredjene f-je mainframe klase strpam u jednu strukturu i da ih prosledim niti kao parametar i kada se nesto desi on samo pozove odredjenu f-ju
Sada ispada da u toj strukturi mora da se nalazi pokazivac i na samu main frame klasu(ili se varam). Onda nema smisla
da prosledjujem i pokazivace na f-ju kada sam prosledio pokazivac na celu klasu...
Hmmmm da li sam u pravu kada kazem da ne moram da prosledjujem i pokazivace na f-je kada vec prosledjujem celu klasu?Samo ne znam kako ce to da se svidi MFC-u....naime moje znanje o mfc-u je skromno.
Ako treba onda nema potrebe
 
Odgovor na temu

Milan Aksic

Član broj: 412
Poruke: 1053
*.beotel.net



Profil

icon Re: pokazivaci na funkcije21.09.2002. u 01:01 - pre 232 meseci
Citat:
doomed:
hvala , hvala odoh da probam mada mi se cini da sam probao sa
.* nesto poput
(struktura.*pok1)()
i da mi javlja da ne moze da je razvije u funkciju ili cak da mu je nepoznat pok1(!!??)
naravno pok1 je pokazivac na f-ju koja "uzima" void i vraca void
videcemo...............
thanks any way

Onaj kod koji sam postovao gore, radi.
Isprobao sam i pre nego sto sam postovao ovde.
 
Odgovor na temu

[es] :: C/C++ programiranje :: pokazivaci na funkcije

[ Pregleda: 6568 | Odgovora: 14 ] > FB > Twit

Postavi temu Odgovori

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