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

wskaznik do funkcji przekazywany w parametrze innej funkcji

Ostatnio zmodyfikowano 2012-07-16 18:28
Autor Wiadomość
Savail
Temat założony przez niniejszego użytkownika
wskaznik do funkcji przekazywany w parametrze innej funkcji
» 2012-07-16 18:07:48
Hej,
Próbowałem zrobić to w ten sposób ale coś mi tu nie wychodzi.
A więc mam 2 klasy:
C/C++
class windows
{
public:
    windows( void * Events( CEGUI::Window * handle ) );
   
    void( * Events )( CEGUI::Window * handle );
};

class Gui
{
   
public:
    static Gui & Obj()
    {
        static Gui Singleton;
        return Singleton;
    }
    void EvWindow( CEGUI::Window * handle );
};
i konstruktor klasy windows:
C/C++
windows::windows( void * Events( CEGUI::Window * handle ) )
{
    this->Events = Events;
}

I teraz gdy tworzę obiekt klasy windows chciałbym aby wskaźnik Events tego obiektu zaczął wskazywać na funkcję w konstruktorze. Próbowałem w ten sposób
windows Parent( & Gui::EvWindow );
ale właśnie w tym miejscu wyskakuje błąd:

1>app.cpp(96): error C2664: 'windows::windows(void *(__cdecl *)(CEGUI::Window *))' : cannot convert parameter 1 from 'void (__thiscall Gui::* )(CEGUI::Window *)' to 'void *(__cdecl *)(CEGUI::Window *)'

Byłbym wdzięczny za wskazanie błędów lub sugestie jakiegoś lepszego rozwiązania.
P-60206
DejaVu
» 2012-07-16 18:17:23
C/C++
__interface IWindow
{
    void metoda();
};

class CButton
    : public IWindow
{
    void metoda() { printf( "button\n" ); }
}

class CWindows
{
    std::vector < IWindow *> m_vWindows;
    void wywolajMetode()
    {
        BOOST_FOREACH( IWindow * pWnd, m_vWindows )
        if( pWnd )
             pWnd->metoda();
       
    }
   
};
/edit:
Druga opcja: delegaty.
Frazy, które należy wpisać w wyszukiwarkę google:

http://warsztat.gd/wiki/Biblioteka+FastDelegate
P-60208
Savail
Temat założony przez niniejszego użytkownika
» 2012-07-16 18:28:48
heh, dzięki wielkie, ta biblioteka fastdelegate odziwo, nawet na wstępie mówi o identycznym problemie nad którym teraz pracuje. Wydaje się być tym czego szukałem ;d
P-60214
« 1 »
  Strona 1 z 1