Methode als Funktionszeiger



  • Wie kann ich eine Methode einer Instanz als Funktionzeiger nutzen?

    class foobar
    {
      public:
        void hallo(void);
    };
    
    int main()
    {
      foobar foo;
      void (*func)(void) = foo.hallo;
    }
    


  • Hallo

    siehe zum Beispiel hier.

    bis bald
    akari



  • #include <cstdlib>
    #include <iostream>
    using namespace std;
    
    class foobar
    {
    public:
      void hallo()
      {
        cout << "Funkion hallo()\n";
      }
    };
    
    int main()
    {
      /**
       * ptr ist ein Zeiger auf eine Methode der Klasse foobar. Dieser
       * wird mit der Methode foobar::hallo initialisiert. Zu diesem
       * Zeitpunkt sind noch keine Instanzen der Klasse foobar notwendig
      */
      void (foobar::*ptr)(void);
      ptr = &foobar::hallo;
    
      /**
       * Klasse foobar instanzieren. foo ist eine Instanz der Klasse
       * foobar, p_foo ein Zeiger auf dieses Objekt. Mithilfe des .*
       * bzw. des ->* Operators und dem Oben erzeugten Zeiger lässt sich
       * die Methode hallo der Klasse foobar aufrufen
      */
      foobar foo;
      (foo.*ptr)();
    
      foobar* p_foo = &foo;
      (p_foo->*ptr)();
    
      /**
       * Ausgabe:
       * Funkion hallo()
       * Funkion hallo()
      */
    }
    

Anmelden zum Antworten