Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- /////////
- // шаблонный CALLBACK "костыль"
- // под любые классы с методом Display()
- ////
- template< typename T >
- class do_Display
- {
- public:
- static void start(void* ptObj)
- {
- T* myDisp = (T*) ptObj;
- cout << "callBk >> ";
- myDisp->Display();
- }
- };
- void do_CallBk_with_Obj(void (*pt2Function)(void* pt2Object), void* pt2Object)
- {
- pt2Function(pt2Object);
- }
- struct IDisplay
- {
- virtual void Display() = 0;
- };
- class Display_A : IDisplay
- {
- void Display(){ cout << "Display_A" << endl; }
- };
- class Display_B : IDisplay
- {
- void Display(){ cout << "Display_B" << endl; }
- };
- struct Display_C
- {
- void Display(){ cout << "Display_C" << endl; }
- };
- void main()
- {
- Display_A dA;
- do_CallBk_with_Obj( do_Display<IDisplay>::start, &dA );
- Display_B dB;
- do_CallBk_with_Obj( do_Display<IDisplay>::start, &dB );
- Display_C dC;
- do_CallBk_with_Obj( do_Display<Display_C>::start, &dC );
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement