Сообщение Re: Minix в С++ или как получить доступ к безымянным предкам от 26.12.2016 14:00
Изменено 26.12.2016 14:02 kov_serg
Здравствуйте, gencoder, Вы писали:
G>Вопрос по архитектуре.
G>Требуется предусмотреть расширение функциональности некоторого класса GLScene (не обязательно весь функциональный набор будет использован в финальной сборке).
G>Функциональность связана с рисованием некоторых сцен (тестовых).
G>Для этого создаем классы примеси Scene1Mix, Scene2Mix. Каждый из классов хранит указатель w на объект типа окно QGLWidget на котором будет выполняться рисование.
G>Вопрос: как правильно передать указателю w указатель на безымянный объект типа QGLWidget (т.е. на GLScene)?
G>Или подскажите более подходящее архитектурное решение.
Уберите всё из конструктора и замените private на protected:
И создание переложи на отдельный клас
G>Вопрос по архитектуре.
G>Требуется предусмотреть расширение функциональности некоторого класса GLScene (не обязательно весь функциональный набор будет использован в финальной сборке).
G>Функциональность связана с рисованием некоторых сцен (тестовых).
G>Для этого создаем классы примеси Scene1Mix, Scene2Mix. Каждый из классов хранит указатель w на объект типа окно QGLWidget на котором будет выполняться рисование.
G>Вопрос: как правильно передать указателю w указатель на безымянный объект типа QGLWidget (т.е. на GLScene)?
G>Или подскажите более подходящее архитектурное решение.
Уберите всё из конструктора и замените 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: Minix в С++ или как получить доступ к безымянным предкам
Здравствуйте, gencoder, Вы писали:
G>Вопрос по архитектуре.
G>Требуется предусмотреть расширение функциональности некоторого класса GLScene (не обязательно весь функциональный набор будет использован в финальной сборке).
G>Функциональность связана с рисованием некоторых сцен (тестовых).
G>Для этого создаем классы примеси Scene1Mix, Scene2Mix. Каждый из классов хранит указатель w на объект типа окно QGLWidget на котором будет выполняться рисование.
G>Вопрос: как правильно передать указателю w указатель на безымянный объект типа QGLWidget (т.е. на GLScene)?
G>Или подскажите более подходящее архитектурное решение.
Уберите всё из конструктора и замените private на protected:
И создание переложи на отдельный клас
G>Вопрос по архитектуре.
G>Требуется предусмотреть расширение функциональности некоторого класса GLScene (не обязательно весь функциональный набор будет использован в финальной сборке).
G>Функциональность связана с рисованием некоторых сцен (тестовых).
G>Для этого создаем классы примеси Scene1Mix, Scene2Mix. Каждый из классов хранит указатель w на объект типа окно QGLWidget на котором будет выполняться рисование.
G>Вопрос: как правильно передать указателю w указатель на безымянный объект типа QGLWidget (т.е. на GLScene)?
G>Или подскажите более подходящее архитектурное решение.
Уберите всё из конструктора и замените 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;
}
И создание переложи на отдельный клас