[WinAPI] Przekazywanie niestatycznej metody konkretnego obiektu jako procedure zdarzeniową okna
Ostatnio zmodyfikowano 2015-01-27 20:42
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ę: #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. |
|
« 1 » |