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

Kako da realizujem Event klasu?

[es] :: Art of Programming :: Kako da realizujem Event klasu?

[ Pregleda: 2793 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vilyu
Web Developer
Beograd, Srbija

Član broj: 1188
Poruke: 444



+2 Profil

icon Kako da realizujem Event klasu?15.07.2006. u 16:05 - pre 216 meseci
Ideja do koje sam dosao je sledeca: Moja glavna klasa koja sadrzi/poziva ostale klase sadrzi i Event klasu. Kada neki objekat hoce da digne Event, on pozove funkciju Event klase, kojoj prosledi naziv event-a i sopstvenu adresu (da bi kasnije objekat koji reaguje na event mogao da koristi podatke objekta koji ga je aktivirao).

E sad mi kao problem ostaje reagovanje na event. Npr. hocu da se neka funkcija OnMyEvent izvrsi kad se digne dogadjaj MyEvent. Pitanje je: kako da moja Event klasa zna da treba da izvrsi tu funkciju?

Da li mozda da pozovem neki metod klase, tipa RegisterFunctionForEvent, kome bih prosledio naziv eventa i referencu ka funkciji koju zelim da klasa pozove? Ali, to je dinamicko resenje. A staticko?

Hvala.
Pera električar 0637129710, BG, preporučujem.
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
*.beotel.net.



Profil

icon Re: Kako da realizujem Event klasu?16.07.2006. u 16:16 - pre 216 meseci
Ja sam to resio (u C++) pomocu delegata. Prvo definisem event:
Code:

class MyClass
{
public:
...
// event sa 2 parametra. Pozivace se func tipa
// bool funcname(int, float);
CppEvent2<bool, int, float> eventFoo;

//event sa 3 parametra
//CppEvent3<bool, int, float, const char*> eventFoo3;

void SomeMethod()
{
 eventFoo.Execute( intVal, floatVal);
}
}

MyClass X;

class MyClassB
{
public:
void MyClassB()
{
  X.eventFoo.Add(this, &MyClass::OnFoo);
}

void OnFoo(int a, float b)
{
 // uradi nesto sa a i b
}
}



Prikačeni fajlovi
 
Odgovor na temu

[es] :: Art of Programming :: Kako da realizujem Event klasu?

[ Pregleda: 2793 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

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