Announcement

Collapse
No announcement yet.

Alternative gesucht: Funktionszeiger bei Memberfunktion einer Klasse

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Alternative gesucht: Funktionszeiger bei Memberfunktion einer Klasse

    Seit ein paar Tagen bin ich am hin und her überlegen wie ich auf möglichst einfache Art und Weise
    die Funktionalität der Funktionzeiger von C auch auf MemberFunktion anwenden kann.

    Leider bin ich bisher auf keine sinnvolle Lösung gekommen oder aber ich sehe den bekannten Wald
    vor lauter Bäumen nicht.

    Mir persönlich geht es eigentlich darum das ich eine Funktion abspeichern kann und zu einem bestimmten
    Zeitpunkt X ausführe. Leider kann das ja nicht gehen da die Funktion einer Klasse über den "this" Zeiger
    einer klasse angesprochen werden.

    Habt ihr ne idee oder nen stichpunkt?

  • #2
    Hab jetzt doch was gefunden, bin aber noch nicht ganz zu frieden damit ich schreib einfach mal den Code:

    Code:
    // Callback-Klasse für Memberfunktionen ohne Argumente und Rückgabewert
    // (Die Signatur der Memberfunktion kann je nach bedarf geändert werden)
    // Basisklasse (wird im Aufrufer des Callbacks benutzt)
    
    class CallbackBase
     { 
     public:  
      virtual void operator()() = 0;
    };
    
    // abgeleitete Klasse (von dieser Klasse werden die Callback-Objekte
    // instanziiert)
    template <typename C> 
    class Callback : public CallbackBase
     {  
    
    public:   
    
     Callback(C &obj, void (C::*method)()): m_obj(obj), m_method(method)
       {  
       }    
    
     virtual void operator()()  
      {       
          (m_obj.*m_method)();  
      } 
     private:   
    
     C &m_obj;  
    
    // Objekt, dessen Memberfunktion aufgerufen werden soll  
      void (C::*m_method)();  // Zeiger auf die Memberfunktion};
    http://www.mikrocontroller.net/topic/155049#1461547

    Was mich noch stört ist das ich zwar jetzt ohne Frage einfach EINE klasse schreiben kann die X verschieden
    anweisungen ausführt aber ich kann nicht X verschiedene Klassen die quasi ein und die dieselbe funktion ausführen
    ausführen, mal ganz einfach formuliert.

    Ich hof das war jetzt nicht zu wirr ausgedrückt falls doch einfach fragen.
    Apropo falls möglich möcht ich keine lösung von euch, echt nur ideen bzw denkanstöße.

    Comment

    Working...
    X