Czy da się tak zrobić ?
np.:
void (__thiscall klasa::*wsk)(void)
wsk = & klasa::metoda;
void * obiekt;
obiekt = wsk; // kompilator nie zglasza bledu !
wsk = obiekt ; //blad !
Czy da się tak zrobić ?
np.:
void (__thiscall klasa::*wsk)(void)
wsk = & klasa::metoda;
void * obiekt;
obiekt = wsk; // kompilator nie zglasza bledu !
wsk = obiekt ; //blad !
Nie istnieje konwersja pomiędzy pointerem na metodę klasy a zwyczajnym, "obiekt = wsk;" nie ma prawa zadziałać. Wywal ten śmieć, który używasz jako kompilator.
spróbuje w takim razie inaczej, dzięki.
info: nie istnieje i tego nie probuj, chocby dlatego, ze ptr-to-member moze byc wiekszy (np. 8b) niz wskaznik (np. 4b).
jesli to Dev-C++ to pamietaj, on ma błędy. dużo.
Pomijając fakt, że konwersja nie istnieje, to kompilator wygenerował błąd dlatego, że:
Niejawna konwersja typ* na void* jest dozwolona.
Niejawna konwersja void* na typ* nie jest dozwolona. Trzeba rzutować jawnie:
typ* zmienna = (typ*) wzkaznik_void;
tylko bron boze tak rzutowac pointer-to-member na void*!
btw. http://www.codeproject.com/KB/cpp/FastDelegate.aspx # "Member Function Pointers - why are they so complex?" i w dol