I C++ kan man ikke lave en generisk funktions pointer der peger på funktioner i vilkårlige klasser.
Den lette måde er at lade alle klasserne arve fra den samme klasse, hvori funktionen er erklæret (pure) virtual.
Du kan også lave et indirekte opslag gennem en pointer til objektet og en funktions pointer.
Problemet er at for at kalde en vilkårlig funktion i en vilkårlig klasse kræves to ting, en pointer til funktionen og en pointer til objektet, en funktionspointer peger kun på funktionen, så du skal selv fremskaffe objektet.
senere kan jeg så : for (int i=0;i<list->Count;i++) { AStruct = (TAList *)list->Items[i]; AStruct->Parse("xx"); }
Ovenstående er afprøvet i BCB 6.0..
Det kan godt være det er en borland specifik måde at gøre tingene på, og at det ikke er særlig portabel til andre compilere, men det er ikke afgørende lige nu..
__closure er det trick der gør det muligt med BorlandC++, det trick virker ikke med andre kompilere.
Det har sandsynligvis været nødvendig for Borland at lave den konstruktion i C++, fordi deres GUI framework er lavet i Delphi, hvor man uden videre kan gøre det du ønsker.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.