Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Tablica wskaźników na metody klasy

Ostatnio zmodyfikowano 2010-06-21 20:27
Autor Wiadomość
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

C/C++
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
C/C++
MF mf[] = {...};
( mf[ 0 ] )();
ale nie działa, pluje

[..] Say &KLASA::metoda();
[..] ...
[..] ...

jak zmienię na taki zapis przy przypisywaniu :

C/C++
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ś ? :)
P-18221
DejaVu
» 2010-06-21 20:10:01
C/C++
#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 );
}

//definicje metod klasy Ui
int Ui::menuInput( memberFunction mf )
{
    int bleble = 155;
    ( this->* mf )();
    return bleble;
}
Źródło: http://forum.idg.pl/wskaznik-metode-t54610.html
P-18222
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 :)
P-18224
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ę.
P-18225
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
P-18226
« 1 »
  Strona 1 z 1