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

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

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

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

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

C++ Необработаное исключение при выполнении gets
C++ Выбрасывает при выполнении
Ошибка при выполнении C++
Ошибка при выполнении C++
C++ Ошибка при выполнении sqrt()
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 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
blackslayer
0 / 0 / 1
Регистрация: 23.10.2009
Сообщений: 9
18.04.2010, 14:29  [ТС]     Создание объектов при выполнении #3
Спасибо помогло.
blackslayer
0 / 0 / 1
Регистрация: 23.10.2009
Сообщений: 9
18.04.2010, 23:18  [ТС]     Создание объектов при выполнении #4
Да вот еще такой вопрос: я создал массив объектов и в него сохраняються созданные объекты, существует проблема, например если я создал 5 объектов и удалил 4-й мне нужно чтобы при чтении объектов четвертый элемент не считывался, другими словами: как мне сделать проверку на содержимое элемента массива есть там объект или объект удален. Никак не могу придумать как это осуществить...
Yandex
Объявления
18.04.2010, 23:18     Создание объектов при выполнении
Ответ Создать тему
Опции темы

Текущее время: 08:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru