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

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

Войти
Регистрация
Восстановить пароль
 
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
#1

Использование std::type_index - C++

14.06.2016, 07:01. Просмотров 366. Ответов 9
Метки нет (Все метки)

Доброе утро,

облазил один игровой движок, там менеджеров ресурсов заполнен
C++
1
std::type_index
- как я понимаю для контейнеров, где лежат все ресурсы и индексируются по имени типа:
C++
1
2
3
4
5
6
Foo a;
Bar b;
addResource( &a );
addResource( &b );
std::map< std::type_index, BaseResource*>
m_arr.push_back( typeid(T), a );
Как вам такой способ Type erasure - и знаете ли вы еще крутые применения этой стандартной обёртки, да и typeid(T) в целом
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2016, 07:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Использование std::type_index (C++):

Использование std::function в std::thread - C++
Нужно вызвать function fnc в новом потоке. Как сделать? function &lt;void(vector&lt;char&gt;)&gt; fnc; void test(vector&lt;char&gt; data) { for...

Использование std::system() - C++
компилирую в студии 2010. система win7. #include &lt;Windows.h&gt; int main() { int i=0; while(i&lt;1) { ...

Использование using namespace std; - C++
Я где-то слышал что использование такой диррективы на корню убивает пространство имен, но ведь только в boost и stl есть похожие классы,...

Использование std::unique_ptr - C++
Есть в коде подобная конструкция, вылетает исключение на этапе очистки памяти. С чем это может быть связано? template &lt;typename T&gt; class...

Использование std::is_nothrow_default_constructible - C++
Здравствуйте! Я использую базовый класс в качестве создателя интерфейса синглтона, и мне необходимо передать в качестве шаблонного...

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream - C++
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++ 2005 Express Edition. Образ диска...

9
Mr.X
Эксперт С++
3051 / 1696 / 265
Регистрация: 03.05.2010
Сообщений: 3,867
14.06.2016, 08:40 #2
Ну, если это map, то он сможет хранить только по одному ресурсу каждого типа. А где это вы видели push_back у мэпа?
0
rikimaru2013
C++ Game Dev
2439 / 1133 / 240
Регистрация: 30.11.2013
Сообщений: 3,690
14.06.2016, 08:44  [ТС] #3
Mr.X, там кстати еще нету функции main и вообще код не компилится.
0
avgoor
915 / 550 / 119
Регистрация: 05.12.2015
Сообщений: 1,531
14.06.2016, 13:22 #4
rikimaru2013, Имхается, должно быть как-то так:
C++
1
2
std::map<std::type_index, std::list<BaseResource*>> m;
m[typeid(...)].push_back(...);
2
Bretbas
Каждому свое
348 / 118 / 31
Регистрация: 05.08.2013
Сообщений: 1,241
Завершенные тесты: 1
20.06.2017, 20:47 #5
rikimaru2013,Mr.X, avgoor, Безопасно ли использовать обертки, такие как std::type_index и std :: type_info, которые работают со старым оператором typeid из <typeinfo>? Где-то читал, что на разных машинах разные результаты можно получить.
0
Peoples
1172 / 677 / 426
Регистрация: 06.02.2016
Сообщений: 1,782
Записей в блоге: 13
Завершенные тесты: 4
20.06.2017, 20:51 #6
Лучше использовать Boost.Typelndex
1
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
20.06.2017, 22:18 #7
Цитата Сообщение от Bretbas Посмотреть сообщение
Где-то читал, что на разных машинах разные результаты можно получить.
Скорее на разных разных компиляторах.
1
Bretbas
Каждому свое
348 / 118 / 31
Регистрация: 05.08.2013
Сообщений: 1,241
Завершенные тесты: 1
21.06.2017, 16:28 #8
Так Вы не ответили, безопасно ли использовать такие вещи как typeid и тд на c++?
0
gray_fox
What a waste!
1521 / 1226 / 70
Регистрация: 21.04.2012
Сообщений: 2,565
Завершенные тесты: 3
21.06.2017, 16:37 #9
Цитата Сообщение от Bretbas Посмотреть сообщение
безопасно ли использовать такие вещи как typeid и тд на c++?
Если собирать всё одним компилятором, то проблем быть не должно, насколько я знаю.
1
Bretbas
Каждому свое
348 / 118 / 31
Регистрация: 05.08.2013
Сообщений: 1,241
Завершенные тесты: 1
21.06.2017, 17:14 #10
спасибо
0
21.06.2017, 17:14
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.06.2017, 17:14
Привет! Вот еще темы с ответами:

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri - C++
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

Использование std::array внутри пользовательского класса - C++
Здравствуйте! Я создал класс, одним из полей которого является массив std::array, однако компилятор ругается на константу, что задаёт...

STL std::set, std::pair, std::make_pair - C++
Я не знаю как описать тему в двух словах, поэтому не обращайте внимание на название темы. Собственно перейдем к нашим баранам: есть...

Разобраться почему не компилируется код (использование std::bitset) - C++
У меня не компилируется этот код. Где Ошибка? #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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