webForumDet fria alternativet

Static class

C/C++

4 svar · 161 visningar · startad av Ryzzen

Medlem sedan mars 2000267 inlägg
Frågan#1

Hello

Nu har jag totalt kört fast.

Grejen är den att jag måste använda mig av en static funktion i en klass. Men det skall oxo kunna anropa övriga klassmedlemar.

Krux två är att definationen måste vara " int funk(void *)"
om jag inte har missuppfattat det hela.

Hur katten skall jag få det att gå ihop.

En kort förklaring till det är att jag håller på med tråd programmerings. Med hjälp av SDL's tråd system.

Finns det någon som vet hur jag skall vrida på problemet.

Medlem sedan maj 20021 466 inlägg
#2

Skicka this via void*-parametern. Efter det kan du anropa klassen genom att kasta om void* till din klasspekare.

Medlem sedan mars 2000267 inlägg
#3

hm... okej

om jag hajade rätt så menade du

MainThread = SDL_CreateThread(Funktion,this);

int Server::Funktion(void *data)
{

    while(data.exit)
data.CheckMessage();

    return (0);

}

men hur tar jag emot pekaren..
för en char pekar är det ju bara att köra

char *text:
text = (char *) data;

Medlem sedan maj 20021 466 inlägg
#4

Om klassen heter CServer och variabeln du vill komma åt är exit kan det se ut så här:
((CServer*)data)->exit;

Medlem sedan mars 2000267 inlägg
#5

Danke..

Funkar fint.. Om det fanns VR kramar så skulle du få en.

Har funderat på det här problemet ett bra tag.

255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
124 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)