Advertisement
Guest User

Untitled

a guest
May 6th, 2015
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 <iostream>
  2.  
  3. class command_message_1
  4. {
  5. public:
  6. };
  7.  
  8. class command_message_2
  9. {
  10. public:
  11. };
  12.  
  13. class other_message_1
  14. {
  15. public:
  16. };
  17.  
  18.  
  19. template<class Message>
  20. void handle_cmd(const Message& message)
  21. {
  22.     std::cout << "handle command message" << std::endl;
  23. }
  24.  
  25. template<class SuperClass>
  26. class Layer : public SuperClass
  27. {
  28. public:
  29.  
  30.     template<class Message>
  31.     void test(const Message& message)
  32.     {
  33.         SuperClass::test(message);
  34.     }
  35.  
  36.  
  37.     void test(const command_message_1& message)
  38.     {
  39.         handle_cmd(message);
  40.     }
  41.  
  42.     void test(const command_message_2& message)
  43.     {
  44.         handle_cmd(message);
  45.     }
  46. };
  47.  
  48. class final
  49. {
  50. public:
  51.  
  52.     void test(const other_message_1& message)
  53.     {
  54.         std::cout << "handle message" << std::endl;
  55.     }
  56. };
  57.  
  58. int main(int argc, char const *argv[])
  59. {
  60.     command_message_1 cmd1;
  61.     command_message_2 cmd2;
  62.     other_message_1 other;
  63.  
  64.     Layer<final> stack;
  65.     stack.test(cmd1);
  66.     stack.test(cmd2);
  67.     stack.test(other);
  68.     return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement