home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / dtx9202 / borhot / f.cpp < prev    next >
C/C++ Source or Header  |  1992-01-06  |  2KB  |  61 lines

  1. /* ------------------------------------------------------ */
  2. /*                      F.CPP                             */
  3. /*            Pointers and Members Functions              */
  4. /*            (c) 1990 Borland International              */
  5. /*                 All rights reserved.                   */
  6. /* ------------------------------------------------------ */
  7. /*  veröffentlicht in: DOS toolbox 2'92                   */
  8. /* ------------------------------------------------------ */
  9.  
  10. /*
  11.   The following code demonstrates defining a pointer to a
  12.   member function, and defining a member of a class to be
  13.   a pointer to a member function of another class.
  14. */
  15.  
  16. #include <iostream.h>
  17.  
  18. class A {
  19.  
  20. public:
  21.   void foo(void)
  22.   {
  23.     cout << "\nin A::foo";
  24.   }
  25. };
  26.  
  27. class B {
  28.  
  29.   public:
  30.  
  31.     void(A::*ptr)(void); // pointer to member function of
  32.                          // class A that takes void
  33.                          // parameters and returns
  34.                          // void, defined in class B
  35. };
  36.  
  37. // ------------------------------------------------------- *
  38. int main()
  39. {
  40.   B xx;
  41.   A yy;
  42.  
  43.   void(A::*ptr2)(void); // ptr to member function of class A
  44.                         // defined locally
  45.   ptr2 = &A::foo;       // assign addr of member function
  46.                         // to variable
  47.   (yy.*ptr2)();         // call member function using local
  48.                         // definition
  49.   xx.ptr = &A::foo;     // assign address of member function
  50.                         // to member
  51.                         // of class B, which is a ptr to
  52.                         // a member
  53.                         // function of class A.
  54.   (yy.*(xx.ptr))();     // call member function using
  55.                         // variable in class B
  56.   return 0;
  57. } // end of main()
  58. /* ------------------------------------------------------ */
  59. /*               Ende von F.CPP                           */
  60.  
  61.