Сообщение Re[2]: Minix в С++ или как получить доступ к безымянным пред от 26.12.2016 14:23
Изменено 26.12.2016 14:38 gencoder
Хотелось бы сделать несколько иное в итоге: перед сборкой проекта просто сконструировать новый класс путем наследования базового класса и некоторой примеси (или нескольких примесей)
P.S. просто "закинуть" в класс несколько методов (использование порождающих паттернов здесь не нужно, т.к. до сборки проекта будет набираться функционал из классов примесей)
Здравствуйте, kov_serg, Вы писали:
_
_>Уберите всё из конструктора и замените private на protected:
_>
_>И создание переложи на отдельный клас
class FinalScene: public Scene, public Scene25Mixin, public Scene125Mixin
{
public:
FinalScene(QWidget * p): Scene(p) { magicDrawFirst(); /*from 25*/ magicDrawSecond(); /*from 125*/ }
};
P.S. просто "закинуть" в класс несколько методов (использование порождающих паттернов здесь не нужно, т.к. до сборки проекта будет набираться функционал из классов примесей)
Здравствуйте, kov_serg, Вы писали:
_
_>Уберите всё из конструктора и замените private на protected:
_>
_>struct Scene1Mixin {
_> Scene1Mix() { w=0; }
_> virtual ~Scene1Mix() {}
_> void setWidget(QGLWidget *w) { this->w=w; }
_> void draw1(){ w->glBegin(/* ...*/;}
_>protected:
_> QGLWidget * w;
_>};
_>struct Scene1 : Scene1Mixin {
_> void draw2() { draw1(); w->... }
_>};
_>Scene1* createScene1(QGLWidget * w) {
_> Scene1 *s=new Scene1();
s->>setWidget(w);
_> //s->someOtherMagic();
_> return s;
_>}
_>
_>И создание переложи на отдельный клас
Re[2]: Minix в С++ или как получить доступ к безымянным пред
Хотелось бы сделать несколько иное в итоге: перед сборкой проекта просто сконструировать новый класс путем наследования базового класса и некоторой примеси (или нескольких примесей)
P.S.1 просто "закинуть" в класс несколько методов (использование порождающих паттернов здесь не нужно, т.к. до сборки проекта будет набираться функционал из классов примесей)
P.S.2 без шаблонов похоже никак ?
Здравствуйте, kov_serg, Вы писали:
_
_>Уберите всё из конструктора и замените private на protected:
_>
_>И создание переложи на отдельный клас
class FinalScene: public Scene, public Scene25Mixin, public Scene125Mixin
{
public:
FinalScene(QWidget * p): Scene(p) { magicDrawFirst(); /*from 25*/ magicDrawSecond(); /*from 125*/ }
};
P.S.1 просто "закинуть" в класс несколько методов (использование порождающих паттернов здесь не нужно, т.к. до сборки проекта будет набираться функционал из классов примесей)
P.S.2 без шаблонов похоже никак ?
Здравствуйте, kov_serg, Вы писали:
_
_>Уберите всё из конструктора и замените private на protected:
_>
_>struct Scene1Mixin {
_> Scene1Mix() { w=0; }
_> virtual ~Scene1Mix() {}
_> void setWidget(QGLWidget *w) { this->w=w; }
_> void draw1(){ w->glBegin(/* ...*/;}
_>protected:
_> QGLWidget * w;
_>};
_>struct Scene1 : Scene1Mixin {
_> void draw2() { draw1(); w->... }
_>};
_>Scene1* createScene1(QGLWidget * w) {
_> Scene1 *s=new Scene1();
s->>setWidget(w);
_> //s->someOtherMagic();
_> return s;
_>}
_>
_>И создание переложи на отдельный клас