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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Вывод строк с определеной буквой http://www.cyberforum.ru/cpp-beginners/thread116929.html
Вводит ряд строк и выводит те из них, которые начинаются с буквы ‘b’. Помогити новичку с столь простой задачкой по языку "C", буду крайне признателен.
C++ Описать структуру Одежда дана структура-одежда(название,цена,размер). создать меню в си в которое входит: 1)заполнить массив структур 2)вывод 3)добавить новую запись на первую позицию 4)вывести на экран только те записи,которые вводим с клавиатуры 5)выход заранее благодарна))) http://www.cyberforum.ru/cpp-beginners/thread116918.html
C++ Отладка квадратного уравнения
Уважаемые, программеры) сегодня начал изучать c++ самостоятельно. Решил написать квадратное уравнение с нуля. Только вот, к сожалению, программа не работает. Буду очень рад за помощь и толковое объяснение. #include <iostream> #include<cmath> using namespace std; int main()
Существует ли метод/функция перевода значения символьной переменной в int C++
Хотел спросить, существует ли метод/функция перевода значения символьной ПЕРЕМЕННОЙ в int?
C++ Двоичные файлы.Дано предложение.Создать файл и вывести в него все символы этого предложения,отличные от знаков препинания.Вывести содержимое на экран. http://www.cyberforum.ru/cpp-beginners/thread116903.html
плллиииз =)
C++ Найти среднее арифметическое количеств положительных, кратных 5 элементов массивов Посмотрите пожалуйста. Может, что то изменить нужно. Потому что некоторые задачи писал, так чтоб хотя бы просто запустились. Использование подпрограмм для решения задач 1.Найти среднее арифметическое количеств положительных, кратных 5 элементов массивов А, В, С. //------------------------------------- #include <iostream> #include <conio.h> подробнее

Показать сообщение отдельно
ISergey
Maniac
Эксперт С++
 Аватар для ISergey
1331 / 864 / 50
Регистрация: 02.01.2009
Сообщений: 2,622
Записей в блоге: 1
15.04.2010, 01:45     Создание объектов при выполнении
Цитата Сообщение от 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
 
Текущее время: 18:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru