Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
DjaFaR
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 24
#1

Управляющий класс с подклассами - C++

20.05.2013, 16:06. Просмотров 458. Ответов 3
Метки нет (Все метки)

Я не понимаю как сделать один класс, в котором будет выбор какой из подклассов использовать.
Конкретная задача: создать растровый графический редактор на основе winbgi
Мне нужно чтобы они отдельно для себя рисовали область нажатия и при выборе одного из них рисовать можно было этим подклассом.
Вот мои наброски, подскажите как будет лучше.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class Menu
{
public:
    int c,fc,mode;
public:
    Menu(int c,int fc):c(c),fc(fc),mode(0){};
    ~Menu(){cleardevice();};
    void createmenu();
    void choosedraw(int,int);
    void show();
};
 
class Rectangle :
    public Menu
{
protected:
    void draw();
public:
    Rectangle(void);
    ~Rectangle(void);
    void createmenu();
};
 
class Line :
    public Menu
{
protected:
    void draw();
public:
    Line(void);
    ~Line(void);
    void createmenu();
};
 
class Bar :
    public Menu
{
protected:
    void draw();
public:
    Bar(void);
    ~Bar(void);
    void createmenu();
};
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.05.2013, 16:06
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Управляющий класс с подклассами (C++):

Для чего управляющий символ \? ? - C++
Для чего в языке С++ используется управляющий символ \? ? Добавлено через 8 минут Вот, что нашел по этому вопросу, но компилятор...

Есть класс A и класс B, класс B вложен в класс A и вложен в него, как классу B получить доступ к переменным класса A просто по имени? - C++
На самом деле ничё фантастического я не прошу, ведь: template <class T> class matrix { friend class diagonal; ...

управляющий символ, обратный "\n" - C++
Существует ли управляющий символ переводящий каретку на предыдущую строку (т е выполняющий роль обратную "\n") или любой другой способ...

Класс таблиц баз данных и класс записей в таблице(реляционная таблица). Предусмотреть класс связей между таблицами - C++
Здравствуйте! Никак не могу продумать структуру этой программы. Проходим наследование, но я все равно не знаю, как его здесь применить. Как...

Отдельно класс данных, класс формул и главный класс - C++
Здравствуйте! У меня есть три вопроса. Первый вопрос. Скажите пожалуйста! Правильный ли это подход к созданию приложений :...

Реализовать класс родительский класс "Пара чисел" и класс-наследник "Комплексное число" - C++
Ткма работы создать класс pair (пара чисел); определить метод перемножения полей и операцию сложения пар (a,b)+(c,d) =(a+b,c+d)...

3
DjaFaR
0 / 0 / 0
Регистрация: 17.04.2013
Сообщений: 24
20.05.2013, 22:38  [ТС] #2
Вот подправил немного но все равно что то не так(
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#include "winbgim.h"
#include "graphics.h"
 
class Menu
{
public:
    int c,fc,mode;
protected:
    virtual void draw();
public:
    Menu(int c,int fc):c(c),fc(fc),mode(0){};
    ~Menu(){cleardevice();};
    void createmenu();
    void choosedraw(int,int);
    void show();
};
 
class Rectangle :
    public Menu
{
protected:
    int x,y;
    void draw();
public:
    Rectangle(int x,int y,int c,int fc, int mode):x(mousex()),y(mousey()),Menu(c,fc,mode){};
    ~Rectangle(){cleardevice();};
    void createmenu();
};
 
class Line :
    public Menu
{
protected:
    void draw();
public:
    Line(void);
    ~Line(void);
    void createmenu();
};
 
class Bar :
    public Menu
{
protected:
    void draw();
public:
    Bar(void);
    ~Bar(void);
    void createmenu();
};
Добавлено через 4 часа 20 минут
ayyy
0
lemegeton
2933 / 1362 / 136
Регистрация: 29.11.2010
Сообщений: 2,725
20.05.2013, 23:19 #3
Шо ау?
В таких задачах классически используют двойную диспетчеризацию.

Добавлено через 3 минуты
И паттерн command.
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
20.05.2013, 23:24 #4
Почитайте про полиморфизм.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.05.2013, 23:24
Привет! Вот еще темы с ответами:

Класс, производный класс, паблик-класс - C++
Задание: Создать класс колесо, которое имеет радиус. Определить конструкторы и метод доступа. Создать класс машин, содержащий класс колесо....

Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки машин ”: марка - C++
Создать класс “Автомагазин”, состоящей из класса ”Марки машин”. Класс “Автомагазин ”:название магазина, адрес, телефон. Класс “ Марки...

Абстрактный класс CGraphicsObject, его наследник - базовый класс CPoint, и класс - наследник от CPoint - C++
Всем доброй ночи! Очень нужна помощь и по мере возможности разъяснения на темы: абстрактный класс в задании(что он из себя представляет и...

Создать класс Элемент списка (Node), а затем класс Список (List) - C++
Задание: Создать класс Элемент списка (Node), а затем класс Список (List). В зависимости от варианта список должен быть одно или...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru