Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
derUnwissende Mini JLI'ler
Anmeldedatum: 14.11.2002 Beiträge: 32
Medaillen: Keine
|
Verfasst am: 31.10.2003, 20:01 Titel: Zeiger auf Funktion |
|
|
Hi,
ich wollte ne Klasse für Buttons schreiben, und da jeder Button ja ne Funktion hat, aber die nich alle gleich sind, dachte ich, dass ich in dieser Klasse nur einen Zeiger auf ne Funktion schreibe.
Nur weis ich nich, ob und wenn wie das überhaupt geht.
Danke schonmal |
|
Nach oben |
|
|
abc_d JLI Master Trainee
Alter: 34 Anmeldedatum: 27.01.2003 Beiträge: 615
Medaillen: Keine
|
Verfasst am: 31.10.2003, 20:05 Titel: |
|
|
Ich würde eine klasse schreiben die eine funktion hat der du ein typ übergeben musst, und je nach dem typ wird ein button erstellt! _________________ http://mitglied.lycos.de/sarti/linuxisevil.gif Linux is evil - get the fact.
Never touch a running System - der Systemling |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 31.10.2003, 20:32 Titel: |
|
|
Du willst ja hoch hinaus.
Als erstes solltest du den typ und das aussehen deiner Funktionen definieren:
Code: | typedef LPVOID (*myCommand)(LPVOID[]); |
Das heist es wird der typ myCommand für eine Funktion definiert. die als Rückgabewert LPVOID hat und als Parameter ein Array von LPVOID.
Kannst es natürlich nach deinen wünschen machen:
Code: | typedef <Rückgabewert> (*<Funktionstypname>)(<Parameter1>,<Parameter2>,<...>); |
Dann musst du noch das in deine Klasse eintragen:
Code: | class DeineKlasse
{
...
myCommand command;
...
}; |
Deine Funktion schreibst du dann so:
Code: | LPVOID TestFunktion(LPVOID argumente[])
{
...
} |
Allgemein würde dass dann so aussehen:
Code: | <Rückgabewert> Funktionsname(<Parameter1>,<Parameter2>,<...>)
{
...
} |
Nachdem du deine Funktionen so erstellt hast kannst du Sie deiner Klasse irgendwo zuweisen:
Code: | DeineKlasse DeineKlassenVariable;
...
DeineKlassenVariable.command = (myCommand)TestFunktion; |
_________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
derUnwissende Mini JLI'ler
Anmeldedatum: 14.11.2002 Beiträge: 32
Medaillen: Keine
|
Verfasst am: 31.10.2003, 21:40 Titel: |
|
|
Dankeschön, werd das gleich mal ausprobieren |
|
Nach oben |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 31.10.2003, 21:45 Titel: |
|
|
Das ganze hab ich hier übrigens auch mal gebraucht das Beispiel dazu ist hier:
www.dragonfx.de/download/scrp.zip
Ein Problem dabei war das ich diese Zeigerfunktionen nicht gleichzeitig in einer Klasse definieren konnte und diese dann zuweisen. Das hab ich gelöst indem ich static verwendet habe. _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
|
me Junior JLI'ler
Anmeldedatum: 10.09.2003 Beiträge: 60
Medaillen: Keine
|
Verfasst am: 01.11.2003, 14:43 Titel: |
|
|
vielleicht hilft jemanden zu diesem thema ja auch folgende web-seite:
www.function-pointers.org _________________ If something is stupid and it works, it ain't stupid! |
|
Nach oben |
|
|
me Junior JLI'ler
Anmeldedatum: 10.09.2003 Beiträge: 60
Medaillen: Keine
|
Verfasst am: 02.11.2003, 13:09 Titel: |
|
|
oops... der link war natuerlich folgender:
www.function-pointer.org
die haben auch noch nette links ^^ _________________ If something is stupid and it works, it ain't stupid! |
|
Nach oben |
|
|
|