Zeiger auf eine Funktion einer Klasse



  • Ich habe folgende Klasse:

    class CHallo
    {
    public:
    	void XYZ()
    	{
    		// mache irgendwas
    	}
    };
    
    CHallo *Hallo = new CHallo;
    
    long Adr = (long)Hallo;
    

    Durch "new" bekomme ich ja einen Zeiger auf die Klasse zurück, den ich in der "Adr" wunderbar als "long" abspeichern kann.
    Wie kriege ich aber denn jetzt den Zeiger auf "XYZ" in einen "long" Wert?

    Gruß
    Onkl Doc



  • #include <iostream>
    
    class Hallo 
    { 
    public: 
        void XYZ() 
        { 
            // mache irgendwas 
        } 
    }; 
    
    int main ()  {
    
      typedef void ( Hallo::*pf ) ();
    
      Hallo hallo; 
    
      pf mfunc = &Hallo::XYZ;
    
      std::cout << &hallo << '\n'
                << &mfunc;
    
      std::cin.get ();
      return 0;
    };
    

    ausgabe bei mingw 3.2

    0x22ff67
    0x22ff68
    

    was auch immer

    p.s.: es haette jede beliebige andere adresse sein koennen, nur so sieht man, wie der mingw die klasse im speicher anordnet.


Log in to reply