[ gmail_ @ 18.04.2006. 16:36 ] @
Pozdrav svima,

trebao bi malu pomoc ako ima tko kakvu ideju.


recimo da imam:
s tim da cu zanemariti constr,destr,sve je public i inline zbog citljivosti.

Code:


typedef int(*func_ptr)(int, int);// typedef

int obicna_funkcija(int a, int b){return a-b;}


class objektA{
public:
   int funckijaOdA(int a, int b ){ return a+b;}
};

class objektB{
public:

void funkOdB(func_ptr fja){// prima pointer na funkcjiu
   rezultat =  fja(5,3);
 }

int rezultat;//member
};


unutar nekog maina:
Code:


objektA  A;
objektB  B;

B.funkOdB(obicna_funkcjia);// sve ok
//e sad ?
B.funkOdB(A.funkcjiaOdA)// da mi je funkcjiaOdA static ovaj poziv bi bio B.funkOdB(&ObjektA::funkcjiaOdA)
// a ovako nemam pojma jer je funkcijaOdA u biti tipa int(ObjektA::*)(int, int)


pa ako moze mala pomoc jer mi treba da u ovu funkOdB(func_ptr fja)) saljem bilo koji objekt koji ima funkcjiu koji prima dva int-a i vraca int
a nemam pojma kako to implementirati bez statickih funkcjia..

P.S. isprika ako sam nesto krivo napisao
[ yooyo @ 18.04.2006. 17:56 ] @
Resi to preko interfejsa:

Code:

class INesto
{
 public:
   virtual bool Metoda1(int a, int b) = 0;
   ...
}


class A: public INesto
{
  public:
   bool Metoda1(int a, int b)
   {
     return a+b;
   }
 ...
}

class B
{
 public:
 bool Uradi(INesto* n, int a, int b)
 {
    return n->Metoda1(a, b);
 }
}


....

A a;
B b;

b.Uradi(a);



[ gmail_ @ 18.04.2006. 19:37 ] @
Citat:
yooyo: Resi to preko interfejsa:

Code:

class INesto
{
 public:
   virtual bool Metoda1(int a, int b) = 0;
   ...
}


class A: public INesto
{
  public:
   bool Metoda1(int a, int b)
   {
     return a+b;
   }
 ...
}

class B
{
 public:
 bool Uradi(INesto* n, int a, int b)
 {
    return n->Metoda1(a, b);
 }
}


....

A a;
B b;

b.Uradi(a);


ideja stoji, ali mi se bas ne uklapa, ne mogu prckati po klasi "A" i jos neke sitnice jer sam napravio za*** u pocetku
[ tosa @ 18.04.2006. 19:44 ] @
Potrazi clanak koji se zove "Fastest possible delegates in C++" ili tako nesto.
Nalazi se na www.codeproject.com i predstavlja ubedljivo najdetaljnije
pokrivene member fn pointere. Mislim da ces tu naci sve sto ti treba.
[ gmail_ @ 18.04.2006. 20:46 ] @
Citat:
tosa: Potrazi clanak koji se zove "Fastest possible delegates in C++" ili tako nesto.
Nalazi se na www.codeproject.com i predstavlja ubedljivo najdetaljnije
pokrivene member fn pointere. Mislim da ces tu naci sve sto ti treba.


hvala, pomoci ce nesto od toga.
[ leka @ 21.04.2006. 09:18 ] @
Evo malenog primercica koji (valjda) govori sve.

Code:

      class fruit
      {
          int f;
      public:
          void jello(int i=0) { f = i; }
      }; // fruit class

      class basket
      {
          void (fruit::*set)(int); // paznja: "set" je pokazivac na fruit metod
      public:
          basket(int i)
          {
              fruit x;
              set = &fruit::jello;
              (x.*set)(i); // pozivamo fruit::jello() metod zapravo, i prosledjujemo mu promenljivu "i".
          }
      }; // basket class

      int main()
      {
          basket b(123);
      }



[Ovu poruku je menjao leka dana 21.04.2006. u 10:19 GMT+1]