Hej! :)
W klasie w sekcji private mam strukturę
struct sSEARCHEDIT sSearchStruct;
zawierającą m.in 2 wskaźniki na funkcje.
GETSIZE_PROC_TYPE myf_GetSize;
GETSTRING_PROC_TYPE myf_GetString;
W konstruktorze klasy po "wynullowaniu" wszystkich wskaźników, aby nie zawierały przypadkowych adresów ustawiam wskaźniki zgodnie ze strukturą wysłaną jako argument dla konstruktora:
if(wsk != NULL)
{
sSearchStruct.myf_GetSize = wsk->myf_GetSize;
sSearchStruct.myf_GetString = wsk->myf_GetString;
}
typedef int( * GETSIZE_PROC_TYPE)(void);
typedef void( * GETSTRING_PROC_TYPE)(int index, string &tekst, int &liczba);
Po tym sprawdzam czy wskaźniki na funkcje nie są "NULL" i faktycznie nie są. Dane do struktury zapisują się prawidłowo.
Do czasu wywołania funkcji f_LSB_FillMap() z wewnątrz klasy nie używam ani nie zmieniam wskaźników na te funkcje.
W funkcji f_LSB_FillMap() zanim nie wywołam tych funkcji sprawdzam czy nie są NULL i tu niespodzianka:
Warunek:
if(!sSearchStruct.myf_GetSize || !sSearchStruct.myf_GetString)
zwraca mi true i funkcja kończy się niepowodzeniem. Ktoś może mi powiedzieć o co może chodzić? Wskaźnika na funkcje uzywam tylko i wyłącznie w konstruktorze ustawiając go i w funkcji f_LSB_FillMap() więc nie ma możliwości przypadkowego wyzerowania.