#pragma once class Museum; class View; class ViewController; class Command { public: Command(const Command * c); Command(Museum & m, View & v, ViewController & c); Command(Museum & m, View & v); Command(Museum & m); protected: Museum & get_museum(); View & get_view(); ViewController & get_controller(); protected: void set_museum(Museum &); void set_view(View &); void set_controller(ViewController &); private: Museum * museum = nullptr; View * view = nullptr; ViewController * controller = nullptr; };