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

prosljedjivanje pointera na member funkciju...

[es] :: C/C++ programiranje :: prosljedjivanje pointera na member funkciju...

[ Pregleda: 2611 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gmail_
Zg

Član broj: 85877
Poruke: 15
*.adsl.net.t-com.hr.



Profil

icon prosljedjivanje pointera na member funkciju...18.04.2006. u 16:36 - pre 219 meseci
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
 
Odgovor na temu

yooyo

Član broj: 4891
Poruke: 1101
..shall-bg.customer.sbb.co.yu.



Profil

icon Re: prosljedjivanje pointera na member funkciju...18.04.2006. u 17:56 - pre 219 meseci
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);



 
Odgovor na temu

gmail_
Zg

Član broj: 85877
Poruke: 15
*.adsl.net.t-com.hr.



Profil

icon Re: prosljedjivanje pointera na member funkciju...18.04.2006. u 19:37 - pre 219 meseci
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
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1342
*.mdc.ubisoft.com.

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


+48 Profil

icon Re: prosljedjivanje pointera na member funkciju...18.04.2006. u 19:44 - pre 219 meseci
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.
 
Odgovor na temu

gmail_
Zg

Član broj: 85877
Poruke: 15
*.adsl.net.t-com.hr.



Profil

icon Re: prosljedjivanje pointera na member funkciju...18.04.2006. u 20:46 - pre 219 meseci
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.
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
..81.static.rny.vf.siwnet.net.

Sajt: dejan.lekic.org


+2 Profil

icon Re: prosljedjivanje pointera na member funkciju...21.04.2006. u 09:18 - pre 219 meseci
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]
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

[es] :: C/C++ programiranje :: prosljedjivanje pointera na member funkciju...

[ Pregleda: 2611 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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