[ vilyu @ 15.07.2006. 16:05 ] @
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.
[ yooyo @ 16.07.2006. 16:16 ] @
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
}
}