Tablica wskaźników na metody klasy 
Ostatnio zmodyfikowano 2010-06-21 20:27
kamillo121 Temat założony przez niniejszego użytkownika  | 
Tablica wskaźników na metody klasy  » 2010-06-21 19:42:42 Witam, otóż mam taki problemik malutki. Jak trzeba mi np tablice wskaźników do funkcji to robię to tak  typedef void( * MF )();
  MF mf[] = { & fun, & fun1, & fun2 };
  ( mf[ 0 ] )();
  i tak wszystko działa, gorzej jak chce zastosować to dla klas, tzn  mam klasę i w niej parę metod, i w jednej z metod właśnie chce przeprowadzić przypisanie tak jak wyżej czyli  MF mf[] = {...}; ( mf[ 0 ] )();
  ale nie działa, pluje  [..] Say &KLASA::metoda(); [..] ... [..] ... jak zmienię na taki zapis przy przypisywaniu : typedef void( KLASA::* MF )();
  MF mf[] = { & KLASA::fun };
  to wtedy przy odwołaniu (mf[0])();    must use .* or ->* to call pointer-to-member function in mf[0] (...)  
 Pomoże ktoś ? :)  | 
 | 
DejaVu  | 
» 2010-06-21 20:10:01 #include <iostream> using namespace std; class Ui { public:     typedef void( Ui::* memberFunction )();     int menuInput( memberFunction mf );     void showMainMenu()     {         cout << "showMainMenu" << endl;     } }; int main() {     Ui ui;     Ui::memberFunction mf =( Ui::memberFunction )( & Ui::showMainMenu );     int menuItem = ui.menuInput( mf ); }
 
  int Ui::menuInput( memberFunction mf ) {     int bleble = 155;     ( this->* mf )();     return bleble; }
  Źródło:  http://forum.idg.pl/wskaznik-metode-t54610.html | 
 | 
kamillo121 Temat założony przez niniejszego użytkownika  | 
» 2010-06-21 20:16:08 Już chyba wiem ,bo ja chce mieć tą tablicę wskaźników na metody w jednej z metod tej klasy a błąd wynikał chyba z tego, że te metody nie były statyczne 
  Dzięki :)  | 
 | 
DejaVu  | 
» 2010-06-21 20:23:47 Metoda statycza to de'facto funkcja, więc to nie to samo co posiadanie wskaźnika na metodę.  | 
 | 
kamillo121 Temat założony przez niniejszego użytkownika  | 
» 2010-06-21 20:27:42 No czytam ten zapis co Pan podał no i powoli dochodzę do błędów jakie popełniłem ale w takim razie to nie wszystkie xD no Dzięki teraz to mam nadzieję rozgryzę :) dosyć ciekawy problem więc warto posiedzieć nad tym   | 
 | 
|  « 1 »  |