Mam klase o nazwie moteur. Mam rowniez jedna z metod:
void moteur::GetLocalIP()
{
char* buffer="";
gethostname(buffer,strlen(buffer));
HOSTENT* lpHostEnt = gethostbyname(buffer);
if (lpHostEnt==NULL) strcpy(localIP, "127.0.0.1");
char lpAddr =(char)inet_ntoa( (struct in_addr)(lpHostEnt->h_addr_list)); //po usunieciu tej linijki (naturalnie nastepnej rowniez) kod kompiluje sie poprawnie
strcpy(localIP, lpAddr);
}
Ta metoda jest oczywiscie jedna z metod klasy. Co ciekawe kompilator nie mial z nia problemu az do momentu, gdy wywoluje ja na rzecz obiektu:
moteur engine;
engine.GetLocalIP();
Gdzie jest blad?
Jest to metoda, ktorej definicja bazuje na funkcji napisanej w aplikacji windowsowej:
void GetLocalIP(void)
{
char* buffer="";
gethostname (buffer,strlen(buffer));
HOSTENT* lpHostEnt = gethostbyname(buffer);
if (lpHostEnt==NULL) strcpy(localIP, "127.0.0.1");
char* lpAddr = (char*)inet_ntoa((LPIN_ADDR)(lpHostEnt->h_addr_list));
strcpy(localIP, lpAddr);
}