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

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

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

Создание объектов при выполнении - C++

14.04.2010, 23:42. Просмотров 426. Ответов 3
Метки нет (Все метки)

Вообщем дело такое: делаю курсовую по ООП на С++(консольная программа). Тут надо сделать иерархию классов, это сделал. Но вот еще кроме этого надо сделать чтобы при работе программы можно было выбирать какие объекты создать, вызывать их методы для установки значений полей, просмотра значений, уничтожения объектов. В плане: появляетьсяя сообщение выберите объект какого класса создать, и список вариантов:
1.
2.
3. и.т.д.
А вот как сделать это ума не приложу, сначала была идея просто сделать функцию которая создает объект и вызывает метод для заполнения полей, а другая функция вызывает метод для прочтения полей, но объект виден только в блоке первой функции тоесть такое не прокатывает. Тем более нужно чтобы можно было создавать сколько угодно объектов при работе программы.

Вообщем вопрос такой: как сделать чтобы при работе программы можно было создать объект выбранного класса, указав его имя а потом еще вызвать методы для установки чтения, записи полей.

У препода моего смысла нет спрашивать, потому-что она сама не очень разбираеться, и ответить конкретно мне не сможет, поэтому прошу помощи у вас.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2010, 23:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Создание объектов при выполнении (C++):

Что будет выведено на экран при выполнении следующей программы при n = 5 ? - C++
Пожалуйста, очень прошу помогите с тестами(( 3)Что будет выведено на экран при выполнении следующей программы при n = 5 ? ...

Ошибка памяти при выполнении, при компиляции не выводит ошибки - C++
ПОмогите плс программа вводит строку символов до точки, а после вычисляет процент согласных в этой строке и выводит их в обратном порядке....

При выполнении разных операций с MS VS2013, например, при закрытии, иногда появляется ошибка - C++
В кодерстве совсем-совсем новичёк, поэтому извиняйте за нубость вопроса. Пытаюсь разобраться в программе MS Visual Studio 2013 (ставил под...

Ошибка при выполнении - C++
Когда запускаю программу на выполнение, выдает ошибку: Linker Error: Undefined symbol input(char near*,int near*, int) in module ...

Ошибка при выполнении - C++
Привет всем. Скажите пожалуйста, что мне делать? При выполнении программы выдает ошибку "Инструкция по адресу "0x004013bd" обратилась к...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ISergey
Maniac
Эксперт С++
1374 / 885 / 52
Регистрация: 02.01.2009
Сообщений: 2,658
Записей в блоге: 1
15.04.2010, 01:45 #2
Цитата Сообщение от blackslayer Посмотреть сообщение
Вообщем вопрос такой: как сделать чтобы при работе программы можно было создать объект выбранного класса, указав его имя а потом еще вызвать методы для установки чтения, записи полей.
Вот тупой пример... (возможно не совсем удачный.. )
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
57
58
59
60
61
62
63
64
65
66
67
#include <iostream>
#include <string>
#include <map>
 
class base{
public:
    virtual ~base(){}
 
    virtual void func_1()  = 0;
    virtual void func_2()  = 0;
    virtual base *create() = 0;
};
 
class A: public base{
public:
    ~A(){ std::cout << "A::~A()\n"; }
 
    void func_1(){ std::cout << "A::func_1()\n"; }
    void func_2(){ std::cout << "A::func_2()\n"; }
    base *create(){ return new A; }
};
 
class B: public base{
public:
    ~B(){ std::cout << "B::~B()\n"; }
 
    void func_1(){ std::cout << "B::func_1()\n"; }
    void func_2(){ std::cout << "B::func_2()\n"; }
    base *create(){ return new B; }
};
 
 
template<typename T>
class Creator{
public:
    template<typename U>
    void add(const std::string &n) { map[n] = new U; }
    T *create(const std::string &n){ return map[n]->create(); }
    ~Creator(){
        std::cout << "Creator::~Creator()\n";
        typename std::map<std::string, T*>::iterator i;
        for(i = map.begin(); i != map.end(); ++i)
            delete (*i).second;
    }
private:
    std::map<std::string, T*> map;
};
int main(){
    Creator<base> cr;
    cr.add<A>("A");
    cr.add<B>("B");
 
 
    base *b = cr.create("A");
    b->func_1(); 
    delete b;
 
    b = cr.create("B");
    b->func_1();
    delete b;
 
    b = cr.create("A");
    b->func_2();
    delete b;
 
    return 0;
}
http://codepad.org/M6rIYLMK
0
blackslayer
0 / 0 / 1
Регистрация: 23.10.2009
Сообщений: 9
18.04.2010, 14:29  [ТС] #3
Спасибо помогло.
0
blackslayer
0 / 0 / 1
Регистрация: 23.10.2009
Сообщений: 9
18.04.2010, 23:18  [ТС] #4
Да вот еще такой вопрос: я создал массив объектов и в него сохраняються созданные объекты, существует проблема, например если я создал 5 объектов и удалил 4-й мне нужно чтобы при чтении объектов четвертый элемент не считывался, другими словами: как мне сделать проверку на содержимое элемента массива есть там объект или объект удален. Никак не могу придумать как это осуществить...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2010, 23:18
Привет! Вот еще темы с ответами:

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

Необработаное исключение при выполнении gets - C++
#include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include &lt;malloc.h&gt; #include &lt;string.h&gt; typedef struct Stack { char *str; Stack...

Ошибка при выполнении программы. - C++
#include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;time.h&gt; #include &lt;cstdlib&gt; using namespace std; int main () { int n, m, k; ...

Паузы при выполнении программы - C++
Дайте пожалуйста код при котором при выполнении программы на определенных местах программа задерживалась (желательно в секундах). ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.04.2010, 23:18
Ответ Создать тему
Опции темы

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