Pointer auf Klassenfunktion



  • Ich möchtte einen Pointer auf eine klasseninterne Funktion übergeben, wobei das Event ein simpler byte-Pointer ist:

    typedef byte* EVENT;
    

    Wenn ich eine globale Funktion habe, geht es, etwa so:

    Objekt->event = (byte*)	 Event;
    

    baer wenn ich auf die entsprechende Datei in der Objekt Klasse verweise, bekomme ich stets den Verweis, dass es sich um einen ungültigen Cast handelt:

    Objekt->event = (byte*)	 Objekt->Event;
    

    Wie mach ich's richtig?



  • Percy2000 schrieb:

    Ich möchtte einen Pointer auf eine klasseninterne Funktion übergeben, wobei das Event ein simpler byte-Pointer ist

    Ähh was nun, Methodenpointer (Funktion einer Klasse) oder Byte-Pointer. Wenn du unter Event eine Methode meinst, kann die jedenfalls kein "simpler byte-Pointer" sein. Was willst du damit erreichen?

    Oder meinst du eine Methode die als Parameter einen byte-Pointer hat?

    cu André



  • Ah, ich meine einen Methodenpointer.

    Ich habe ein Pointer-Objekt, das Teil der Klasse ist, zur Laufzeit erstellt wird und dessen Event Funktion seinerseits durch eine bestimmte Methode der Klasse kontrolliert werden soll.



  • Dann mußt du einen Memberzeiger verwenden (mit Angabe der konkreten Klasse):

    typedef Klasse::byte* EVENT;
    

    Edit: Wenn du eine Methodenzeiger verwenden willst, dann mußt du auch noch die Paramter angeben (oder aber leere Klammern):

    typedef void (Klasse::*EVENT)(/*Parameter*/);
    

    Was jetzt dein 'byte*' hier sein soll, Rückgabewert oder Parameter mußt du selber entscheiden.


Anmelden zum Antworten