Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
"C with Classes"
1646 / 1403 / 523
Регистрация: 16.08.2014
Сообщений: 5,877
Записей в блоге: 1
1

TypeErasure

01.09.2017, 10:47. Показов 1205. Ответов 21
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
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
class any
{
public:
    template<typename T>
    any(const T& t) : held_(new holder<T>(t)){}
    ~any(){ delete held_; }
    template<typename U>
    U cast() const
    {
        if(typeid(U) != held_->type_info())
            throw std::runtime_error("Bad any cast");
        return static_cast<holder<U>* >(held_)->t_;
    }
private:
    struct base_holder
    {
        virtual ~base_holder(){}
        virtual const std::type_info& type_info() const = 0;
    };
    
    template<typename T> struct holder : base_holder
    {
        holder(const T& t) : t_(t){}
        const std::type_info& type_info() const
        {
            return typeid(t_);
        }
        T t_;
    };
private:
    base_holder* held_;
};
Объясните принцип работы вот этого куска кода
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    struct base_holder
    {
        virtual ~base_holder(){}
        virtual const std::type_info& type_info() const = 0;
    };
    
    template<typename T> struct holder : base_holder
    {
        holder(const T& t) : t_(t){}
        const std::type_info& type_info() const
        {
            return typeid(t_);
        }
        T t_;
    };
private:
    base_holder* held_;
0
805 / 532 / 158
Регистрация: 27.01.2015
Сообщений: 3,017
Записей в блоге: 1
01.09.2017, 17:39 21
Author24 — интернет-сервис помощи студентам
dimcoder, низнаю)) я писал в стиле мудко
0
УГнетатель
01.09.2017, 21:28     TypeErasure
  #22

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
тайп-эрэйдж
Type-a-rage?

0
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru