• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Static member Funktion mit this aufrufen ... oder anders rum

Binary

Gast
Also ich hänge da in einer Denkschleife fest.

Ich möchte eine Carbon C++ AGL Fensterklasse schreiben und den Timer gleich
mit einbauen, und eines schöne Tages als Interface implementieren (ähnlich glut).

Mein Problem ist nun, dass ich an NewEventLoopTimerUPP ein Funktion übergeben
muss in der steht was denn nun beim Ideln passieren soll.
Dise Funktion muss nach meinem Erkentnisstand static sein, damit sie garantiert zum
Start des Programms verfügbar ist.

Aber da in dieser Funktiun die Drawmethode aus der Klasse aufgerufen werden soll
stehe ich jetzt etwas dumm da, weil ich die nicht ohne Objekt aufrufen kann (das
ja grade gebaut wird) und this kann ich bei static ja auch net verwenden.

Also, irgendwie muss ich es hinkriegen, an NewEventLoopTimerUPP eine Funktion zu
übergeben die es "noch nicht gibt" oder von einer statischen Funktion etwas aufrufen
was es auch noch nicht gibt.

Oder das ganze aus der Klasse raus halten ...?

lg
Binary
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Da ich nie mit Carbon programmier ist die Anwort etwas schwierig.

Ich nehme an, daß Du einen Function Pointer übergeben mußt. Wenn ein Pointer auf eine C-Function erwartet wird, dann mußt Du auch so einen übergeben. Der Zeiger auf einen static member function hat eine andere Aufrufkonvention. Auf einigen Plattformen funktioniert es trotzdem. Daher mag das mit Carbon funktionieren.

So zum eigentlichen Problem, Du willst also eine Callback-Handler schreiben. Erlaubt dieser Callback-Handler die Übergabe eines void* Parameters? Wenn ja, kannst Du das dazu benutzen eine (virtuelle) member function aufzurufen. Wenn nicht mußt Du Dich damit abfinden, daß die Klasse ein Singleton wird. Ob Du das im Sinn hattest? Irgend wie klang das nicht so.
 

Binary

Gast
Hi danke für deine Antwort.

Ich habs jetzt über eine virtuelle Funktion realisiert. Ich hab heraus gefunden,
dass es Callbacks so in C++ gar nicht mehr gibt und der Ersatz dafür eben virtuelle
Funktionen sind. Ein Singleton wäre nicht schlimm gewesen aber auch nicht schön.

lg
Binary