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

[WinAPI] Przekazywanie niestatycznej metody konkretnego obiektu jako procedure zdarzeniową okna

Ostatnio zmodyfikowano 2015-01-27 20:42
Autor Wiadomość
Fireho
Temat założony przez niniejszego użytkownika
[WinAPI] Przekazywanie niestatycznej metody konkretnego obiektu jako procedure zdarzeniową okna
» 2015-01-27 20:42:51
Większą część pytania zawarłem w temacie - jak przekazać niestatyczną metodę konkretnego, utworzonego obiektu Windowsowi jako procedurę obsługi zdarzeń? W "tutejszym" kursie WinAPI nie ma nic o łączeniu WinAPI i OOP, zajrzałem do Xion'a(koniec 2.2 zaawansowana obiektowość) i tam pokazywał coś takiego, ale nawet przykładowy kod nie chciał działać. Polegało to na tym, że tworzył specjalną strukturę przechowującą wskaźnik na obiekt i wskaźnik na metodę klasy, następnie używał operatora ->* i to miało działać. Ale nie kompiluje się:
C/C++
#include <iostream>
class CFoo {
public:
    void Metoda( int nParam )
    { std::cout << "Wywolano z " << nParam; }
   
};
struct METHODPOINTER
{
   
    CFoo * pObject;
    void( CFoo::* p2mfnMethod )( int );
   
    METHODPOINTER( CFoo * pObj, void( CFoo::* p2mfn )( int ) )
        : pObject( pObj )
         , p2mfnMethod( p2mfn )
    { }
   
    void operator ()( int nParam )
    {( pObject->* p2mfnMethod( nParam ) ); }
};
int main() {
    CFoo Foo;
    METHODPOINTER p2ofnMetoda( & Foo, & CFoo::Metoda );
    p2ofnMetoda( 69 );
}
main.cpp|69|error: must use '.*' or '->*' to call pointer-to-member function in '((METHODPOINTER*)this)->METHODPOINTER::p2mfnMethod (...)', e.g. '(... ->* ((METHODPOINTER*)this)->METHODPOINTER::p2mfnMethod) (...)'|
Jak to naprawić? Jest jakiś inny sposób?

@edit: W złym dziale dałem.
P-125633
« 1 »
  Strona 1 z 1