1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

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

Dieses Thema im Forum "OS X-Developer" wurde erstellt von Binary, 18.11.05.

  1. Binary

    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
     
  2. tjp

    tjp Baldwins roter Pepping

    Dabei seit:
    07.07.04
    Beiträge:
    3.255
    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.
     
  3. Binary

    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
     

Diese Seite empfehlen