Форум программистов, компьютерный форум CyberForum.ru

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

Войти
Регистрация
Восстановить пароль
 
xlxndr
57 / 9 / 3
Регистрация: 14.06.2013
Сообщений: 115
#1

Как выбрать класс из консольного меню? - C++

01.01.2016, 20:38. Просмотров 181. Ответов 0
Метки нет (Все метки)

Есть классы графических фигур, описание их - в соответствующих файлах. Для всех них есть метод рисования Draw(), выполненный на основе библиотеки BGI grahpics.h;

Делаю программу так, чтобы выбирался массив экземпляров класса путем ввода с клавиатуры. В дальнейшем будет идти обработка данных в зависимости от введенного класса. Требуется сократить программу и не делать всех вариантов обработки данных для каждого класса (например, с помощью switch()... case '...' ), что необходимо, например, если таких классов много и для каждого класса тоже могут быть варианты операций типа switch()... case '...' .

Пробую делать так:
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
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <graphics.h>
#include <math.h>
using namespace std;
 
#include "header.h"
 
const int N=100, 
          MaxX=800, 
          MaxY=600;
 
void MakeClassDraw(int n, TPoint* TClass)
{
    for(int i=0;i<n;i++)    
    (TClass+i) -> Draw();
}
    
int main(int argc, char* argv[])
{
    setlocale(LC_ALL,".1251");
    srand(time(NULL));
    
    TPoint     P[N];
    TLine      L[N]; 
    TCircle    C[N]; 
    TEllipse   E[N];
    TTriangle  T[N];
    TRectangle R[N];
    char      a;    
    TPoint*   ClassLink; 
    
    cout<<"Введите:\n1 - ТочкаГ*,\n2 - Линия,\n3 - Окружность,\n4 - Эллипс,\n5 - Прямоугольник,\n6 - Прямоугольник.\n";
    cin>>a; cin.get();
    
    initwindow(MaxX,MaxY);
    
    switch (a) 
    {
           case '1': ClassLink = P; break;
           case '2': ClassLink = L; break;
           case '3': ClassLink = C; break;
           case '4': ClassLink = E; break;
           case '5': ClassLink = T; break;
           case '6': ClassLink = R; break;
           default: cout << "\nВведено не корректное значение.\n";
    }
    
    initwindow(MaxX,MaxY);
    
    MakeClassDraw(N,ClassLink);
 
    getch();
    return 0;
}
Программа вроде компиллируется, рисует 2 фигуры из 100 (2 точки, 2 треугольника или др. фигуры), а затем зависает... Видимо что-то не правильно в коде... (сделано в Dev-Cpp).

Итак, еще раз, вопросы:
1) Как выбрать класс из меню, присвоить его "идентификатор" какой-то переменно (какой?) и потом работать с этой абстрактной переменной, а не с экземпляром конкретного класса???

2) Можно ли как-то ввести этот "идентификатор" экземпляра класса с клавиатуры а не с помощью switch()... case'...', как сделано у меня... поскольку, в указатель не получается ввести значение?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.01.2016, 20:38
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как выбрать класс из консольного меню? (C++):

Реализовать базовый класс "Футбольная команда" и класс-наследник с методами консольного ввода/вывода - C++
Составить программу на языке С++, в которой описывается класс (с добавлением наследуемого подкласса) с методами ввода с клавиатуры и вывода...

Создание консольного меню - C++
Дорогие друзья-товарищи, нужен совет по работе с консолью в Windows/Linux. Существуют ли какие-либо библиотеки (что наверняка) и функции,...

Выбор опции из консольного меню стрелками клавиатуры - C++
Подскажите пожалуйста как можно сделать так чтобы я мог выбирать опцию из меню стрелками в консоли но при этом чтобы было видно что я...

Простенькое графическое меню для консольного приложения DOS - C++
помогите реализовать простенькое графическое меню для консольного приложения DOS

Разработка консольного приложения средствами DevC++. Формирование пользовательского текстового меню - C++
на фото есть таблица с фамилиями... мне нужна работа Васильевой Анастасии, а конкретно написать код. Спасибо.

Разработать класс "Информация о поездах" с функционалом для консольного и файлового ввода/вывода результатов - C++
Добрый вечер, уважаемые форумчане. Новичок нуждается в вашей помощи. Есть задание на работу с файлами. Условие:у администратора...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.01.2016, 20:38
Привет! Вот еще темы с ответами:

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

Выбрать название динамической структуры (назвать класс) - C++
Как попроще обозвать свою динамическую структуру данных. Можно ли как-то использовать универсальное название типа MyStruct, но скромнее))

Класс меню! - C++
День добрый!Как создать класс меню?

Как отличается оконное от консольного программирования? - C++
Насколько знаю, есть borland c++ builder с графическим редактором. Возник вопрос, как отличается этот Борланд и, к примеру, обычный...


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

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

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