pmcgee

C++Builder method pointers

May 2nd, 2021 (edited)
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.04 KB | None | 0 0
  1. #include <Vcl.ComCtrls.hpp>             // String
  2. #include <map>
  3. #include <iostream>
  4. // *pragma push explicit rcti
  5. #pragma explicit_rtti methods (__published, public) properties (__published, public)
  6.  
  7.  
  8. class TTestClass : public TObject {
  9.     String  FName;
  10.  
  11.     public :
  12.         __property
  13.         String  Name          =     { read = FName };
  14.         void    DoGetRequest  ()    { std::cout << ( __FUNC__ ) << "\n"; }
  15.         void    DoPostRequest ()    { std::cout << ( __FUNC__ ) << "\n"; }
  16. };
  17.  
  18. typedef void (TTestClass::* TResourceFunc)();
  19. typedef std::map <String,   TResourceFunc>     TResourceFuncsList;
  20.  
  21. void    f( TTestClass* tc, TResourceFunc rf )  {  (tc->*rf)();  }
  22.  
  23. int main()
  24. {
  25.     TTestClass* tc = new TTestClass();
  26.  
  27. //  f( tc, &TTestClass::DoGetRequest  );
  28. //  f( tc, &TTestClass::DoPostRequest );
  29.  
  30.     TResourceFuncsList rfl {   {"Get Request",  &TTestClass::DoGetRequest } ,
  31.                                {"Post Request", &TTestClass::DoPostRequest}
  32.                            };
  33.  
  34.     f( tc, rfl["Get Request" ] );
  35.     f( tc, rfl["Post Request"] );
  36.  
  37.     getchar();
  38.     return 0;
  39. }
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
Add Comment
Please, Sign In to add comment