[an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]
[an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive] (none) [an error occurred while processing this directive] [an error occurred while processing this directive] [an error occurred while processing this directive][an error occurred while processing this directive]![]() |
![]() |
![]() |
|||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
![]() |
![]() |
![]() |
Jeg sidder og bikser med et C++ program som skal bruge events(callbacks). Ideen er at jeg har en klasse som har en public variabel som brugeren af klassen kan sætte til at pege på en funktion, som bliver kaldt af klassen når noget bestemt sker. Dette er også nemt nok hvis den funktion der skal kaldes er en ganske almindelig C funktion, men jeg ville gerne have at det er en (ikke statisk) funktion i en anden klasse, som bliver kaldt. Heller ikke noget problem FORUDSAT at man ved hvilken klasse funktionen tilhører. Så kan man bare gemme en pointer til klasse og en pointer til funktionen, og kalde funktionen ved at bruge dem. Men det eneste jeg ved om funktionen er at det er member funktion! Så var det jeg tænkte at det kan Borland C++ Builder da finde ud af, for den bruger lige så mange events som Delphi, så den må kunne give mig et hint til hvordan man gør i ANSI C++. Men det var åbenbart også et problem som Borland havde været ude for, fordi de havde sprunget let og elefant hen over problemet og implementeret en __closure variabel i deres compiler, som kunne det. Øv. Og det kan jeg ikke bruge hvis det skal være ANSI C++ kompatibelt. Jeg kan selvfølgelig altid bruge en almindelig C funktion som event og så lade den kalde den rigtige funktion på den rigtige klasse, men det kan vist kun blive rodet. Så var det jeg tænkte at det må Hr. Stroustrup da have tænkt på, men efter at have læst i hans C++ bog i et godt stykke tid må jeg erkende at det ikke virker som om han har. Tilsidst besluttede jeg mig for at skrive til SSLUG for at høre om der var nogle andre der havde haft det problem, og var kommet frem til en smart løsning, som jeg ikke havde tænkt på. MVH Peter Aagaard Kristensen
![]() |
![]() |
![]() |
||||||||||||
|
||||||||||||||
![]() | ||||||||||||||
|
||||||||||||||
![]() |
![]() |
![]() |