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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Ошибка при выполнении программы - C++
//set.h #pragma once typedef unsigned short WORD; class Set { private: int minElem; int maxElem;

++i и i++ разница при выполнении цикла - C++
Доброго времени суток! Действительно ли в цикле вида: for(int i = 0; i < n; ++i) {} ++i Будет быстрее чем i++?

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

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ISergey
Maniac
Эксперт С++
1372 / 883 / 52
Регистрация: 02.01.2009
Сообщений: 2,652
Записей в блоге: 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     Создание объектов при выполнении
Ответ Создать тему
Опции темы

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