Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class ProtocolBase {
- public:
- virtual void reset_parameters() {
- std::cout << "reset parameters" << std::endl;
- }
- virtual void set_parameters() {
- std::cout << "set parameters" << std::endl;
- }
- };
- class ProtocolV1 : public ProtocolBase
- {
- public:
- void set_parameters() override {
- std::cout << "set parameters for V1" << std::endl;
- }
- };
- class ProtocolV2 : public ProtocolBase
- {
- public:
- void set_parameters() override {
- std::cout << "set parameters for V2" << std::endl;
- }
- void reset_parameters() {
- std::cout << "reset parameters for V2" << std::endl;
- }
- void do_V2() {
- std::cout << "doing V2" << std::endl;
- }
- };
- int main(int argc, char const *argv[])
- {
- int version = std::atoi(argv[1]);
- std::unique_ptr<Protocol> protocol = std::make_unique<ProtocolV1>();
- switch (version)
- {
- case 1:
- /* do nothing at the moment */
- break;
- case 2:
- protocol.reset(new ProtocolV2);
- break;
- default:
- break;
- }
- protocol->reset_parameters();
- if(ProtocolV2* p = dynamic_cast<ProtocolV2*>(protocol.get())) { //not sure about this
- p->do_V2();
- }
- protocol->set_parameters();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement