c++ - MVP Passive View approach with FLTK -
i have basic problem, trying use fltk mvp passive view described here. managed it, doesn´t feel right way i´m doing it.
i´m having fl_window
, containing widgets , fl_gl_window
opengl functionality. know, can add widgets , stuff fl_window
between begin()
, end()
. , seems have instantiate when add directly in between these calls, got that:
(please @ small "story" in comments beside code, because explains i´m doing , want know if fine in case, or maybe can point me way better solution, because feels wrong.)
main.cpp
int main(/*arguments*/) { model* model = new model(); ipresenter* presenter = new presenter(model); //presenter knows model @ point iview* view = new view(presenter); //view gets reference presenter... }
view.h
class view : public fl_window { public: view(ipresenter* presenter); virtual ~view(); private: iview* gl_window; ipresenter* presenter; };
view.cpp
view::view(ipresenter* presenter) :fl_window(/*arguments*/) { this->presenter = presenter; begin(); //add widgets gl_window = new glwindow(this->presenter,/*more arguments*/); //...instantiates glwindow , passes received reference it... end(); show(); fl::run(); }
glwindow.h
glwindow::glwindow(ipresenter* presenter, /* more arguments*/) : fl_gl_window(/*arguments*/), iview() { //initialisations this->presenter = presenter; //...which glwindow uses communication and... this->presenter->setview(this); //...to set reference presenter //same view }
ipresenter.h
class iview; //forward declaration because ipresenter includes iview , vice versa class ipresenter { public: //pure virtual methods };
iview.h looks same ipresenter.h.
because want mvp
, both windows views (one view
containing another). every view
needs communicate presenter
, shown in sequence diagram fowler
, view
needs hold reference presenter
, vice versa. used forward declaration in interface headers.
as mentioned, want know, if there better way this. maybe it´s somehow possible add fl_gl_window
without having instantiate @ point. or maybe mvp passive view
approach incorrect.
i hope explanation understandable. in advance help!
Comments
Post a Comment