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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Посоветуйте литературу по с++(с большим приоритетом на блок-схемы) http://www.cyberforum.ru/cpp-beginners/thread1629909.html
Еще раз доброго времени суток дорогие форумчане, решил избавиться от очередного страха, который заставляет меня засомневаться каждый раз при чертеже блок-схемы(алгоритма) программы. Скачал достаточно...
C++ Разложение на простые множители решетом Эратосфена Всем привет! Помогите, пожалуйста, отыскать ошибку или значение, которое неправильно вычисляется. Не могу понять, где проблема. Решаю задания на одном сайте, решение проходит несколько... http://www.cyberforum.ru/cpp-beginners/thread1629875.html
C++ Разработать класс векторов произвольной одинаковой длины
Добрый вечер! Прошу помочь с задачей :) Разработать класс векторов произвольной одинаковой длины. Переопределить операции сложения, вычитания, операцию ++ прибавления 1 ко всем элементам. Создать...
Разработать класс "Матрица" C++
Добрый вечер! Прошу помочь с задачей :) Разработать класс матриц размера 2 на 2. Переопределить операции сложения, умножения и вычитания матриц, вычисления детерминанта. Создать класс-потомок...
C++ Разработать класс "Комплексное число", переопределить четыре арифметических действия и операцию сравнения http://www.cyberforum.ru/cpp-beginners/thread1629872.html
Добрый вечер! Прошу помочь с задачей :) Разработать класс комплексных чисел, переопределить четыре арифметических действия и операцию сравнения. В основной программе проверить корректность....
C++ Пытаемся прикрутить CMake к QtCreator под OS X Доброе время суток, навеяло темой о самой лучшей IDE! И так собрался я подружить Qt и cmake (Qbs что то мне не пошел)! С начало полез в настройки самой IDE, там есть встроенный генератор,... подробнее

Показать сообщение отдельно
xlxndr
57 / 9 / 3
Регистрация: 14.06.2013
Сообщений: 115

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

01.01.2016, 20:38. Просмотров 183. Ответов 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'...', как сделано у меня... поскольку, в указатель не получается ввести значение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru