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

Контейнер из неоднородных элементов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ wxDev, не работает inp и outp http://www.cyberforum.ru/cpp-beginners/thread314282.html
Подскажите пожалуйста, какую библиотеку в wxDev используют функции inp и outp для работы с портами? conio.h и dos.h не помагают. Пишет: undefined reference to `outp' undefined...
C++ Битовое представление Здравствуйте! Напишите пример функции, которая принимает целое число и выводит его битовое представление . int Bit_Representation (int int_number) Спасибо! http://www.cyberforum.ru/cpp-beginners/thread314274.html
Срочно!!! Бок с массивом C++
Надо создать массив с условием: -что его можно вводить(при выполнение программы) -а потом считывать сколько элементов в нем(и сразу выводится на экран) З.Ы. Вроди бы не сложно а вот не могу
C++ Массивы в С++
В одномерном массиве, состоящем из 10 целых элементов, вычислить:сумму элементов массива, расположенных между первым и вторым отрицательными элементами. Добавлено через 1 минуту #include...
C++ Определить ,является ли граф связным.Граф задан списком связей http://www.cyberforum.ru/cpp-beginners/thread314261.html
Определить ,является ли граф связным.Граф задан списком связей. как вобще делаются графы на С???????? не понимаю как делать....(((
C++ Написать функцию, которая сортирует вещественный массив методом Хоара Написать функцию ,которая сортирует вещественный массив методом Хоара по убыванию суммы разности тангенса и котангенса элементов на С не понимаю как делать((( подробнее

Показать сообщение отдельно
volovzi
267 / 169 / 8
Регистрация: 14.03.2010
Сообщений: 501
06.06.2011, 19:03
eugrita, у тебя всё правильно, только нужно сделать список независимым от элементов, которые в него помещают, а сами элементы обобщить с помощью шаблонов, а именно не писать вручную каждого наследника базового класса, а написать один шаблонный класс.
Ну и для выведения использовать виртуальные функции:
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
#include <iostream>
#include <string>
#include <list>
 
class basic_element
{
public:
    virtual ~basic_element () {}
    
    friend std::ostream & operator << (std::ostream & stream, const basic_element & e)
    {
        return e.print_to_stream(stream);
    }
    
private:    
    virtual std::ostream & print_to_stream (std::ostream & stream) const = 0;
};
 
template <typename Value>
class element : public basic_element
{
public:
    typedef Value value_type;
    
    element ()
    {
    }
    
    element (const Value & value):
        value(value)
    {
    }
   
private:
    virtual std::ostream & print_to_stream (std::ostream & stream) const
    {
        return stream << value;
    }
    
public:
    value_type value;
};
 
int main()
{
    typedef std::list<basic_element *> container_type;
    container_type elements;
    
    elements.push_back(new element<int>(17));
    elements.push_back(new element<std::string>("qwe"));
    
    for (container_type::iterator i = elements.begin(); i != elements.end(); ++i)
    {
        std::cout << **i << std::endl;
    }
    
    for (container_type::iterator i = elements.begin(); i != elements.end(); ++i)
    {
        delete *i;
    }
    
    return 0;
}
Зачем это нужно?
Например, для интерпретаторов, в частности, как выше заметили, для разбора строки.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru