Advertisement
Guest User

Untitled

a guest
Jun 20th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.24 KB | None | 0 0
  1. class ProtocolBase {
  2. public:
  3. virtual void reset_parameters() {
  4. std::cout << "reset parameters" << std::endl;
  5. }
  6.  
  7. virtual void set_parameters() {
  8. std::cout << "set parameters" << std::endl;
  9. }
  10. };
  11.  
  12. class ProtocolV1 : public ProtocolBase
  13. {
  14. public:
  15. void set_parameters() override {
  16. std::cout << "set parameters for V1" << std::endl;
  17. }
  18. };
  19.  
  20. class ProtocolV2 : public ProtocolBase
  21. {
  22. public:
  23. void set_parameters() override {
  24. std::cout << "set parameters for V2" << std::endl;
  25. }
  26.  
  27. void reset_parameters() {
  28. std::cout << "reset parameters for V2" << std::endl;
  29. }
  30.  
  31. void do_V2() {
  32. std::cout << "doing V2" << std::endl;
  33. }
  34. };
  35.  
  36. int main(int argc, char const *argv[])
  37. {
  38. int version = std::atoi(argv[1]);
  39.  
  40. std::unique_ptr<Protocol> protocol = std::make_unique<ProtocolV1>();
  41. switch (version)
  42. {
  43. case 1:
  44. /* do nothing at the moment */
  45. break;
  46. case 2:
  47. protocol.reset(new ProtocolV2);
  48. break;
  49. default:
  50. break;
  51. }
  52.  
  53. protocol->reset_parameters();
  54.  
  55. if(ProtocolV2* p = dynamic_cast<ProtocolV2*>(protocol.get())) { //not sure about this
  56. p->do_V2();
  57. }
  58. protocol->set_parameters();
  59. return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement