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

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

Войти
Регистрация
Восстановить пароль
 
unkarjedy
3 / 3 / 0
Регистрация: 13.03.2011
Сообщений: 114
#1

Инициализация static map - C++

08.04.2014, 15:47. Просмотров 874. Ответов 5
Метки нет (Все метки)

Есть модуль, отвечающий за выдачу Сообщения ошибки по коду ошибки.
Пока использую просто в тупую статический map прям в коде. Потом сделаю уже базу...

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
#include "ErrorCodes.h"
#include <map>
using namespace std;
 
static map<ERROR_CODE, string> em;
static bool isEmItialized = false;
static void InitErrorMessages();
 
string GetErrorMessage(ERROR_CODE rc) {
    if(!isEmItialized) {
        InitErrorMessages();
        isEmItialized = true;
    }
 
    map<ERROR_CODE, string>::iterator it;
    it = em.find(rc);
    if(it != em.end()) {
        return it->second;
    } else {
        return string("Unknown error!");
    }
}
 
static void InitErrorMessages() {
    em[OK]                      = "No erro";
    em[PARSING_ERROR]           = "Expression parsing error";
    em[FUNCTION_NOT_FOUND]      = "Solving function was not found";
    em[UNKNOWN_PROBLEM]         = "Unknown problem type";
    em[WRONG_FUNC]              = "Wrong function";
    em[NO_SOLUTION]             = "No solution";
    em[NOT_ALL_CONDITIONS_IN_ODE] = "The task is not completed. Not all conditions are specified";
}
Когда программа входит в инициализацию em карты, то на первой же строчке всё крашится... ничего не пишется.
Я, вообще, корректно использую и инициализирую map тут?

Если подробнее крашится где-то внутри карты на строке
C++
1
2
3
4
5
_Self&
      operator--()
      {
    _M_node = _Rb_tree_decrement(_M_node);
         ...
ERROR_CODE просто перечисление...

Добавлено через 11 минут
При чём есть точно такой же модуль для ошибок другого типа и в нём всё работает... Ничего не вылетает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2014, 15:47
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Инициализация static map (C++):

Инициализация static переменной - C++
Задание опять же таки из книги Страуструпа: Определите два класса, каждый со статическим членом, так, чтобы конструирование статического...

инициализация static данных - C++
как мне проинициализировать float в private ??? class Fuller:public HeavyCar { const static int volume = 2; const static float...

Static поля в классе и инициализация - C++
Мне нужен класс, у которого было бы общие переменные и функции их устанавливающие \ читающие для всех экземпляров. Но статик поля требует...

Инициализация static члена класса - C++
Добрый вечер! Есть класс, в нём в private реализован ещё один + это всё шаблоны. Во вложенном классе есть static указатель на переменную...

Инициализация в объявлении константных статических (const static) членов-данных класса. - C++
Привет. Подскажите пожалуйста почему нельзя создавать в классе const static float, а const static int можно? class A{ const...

Обращение к элементам vector, который находится в map, находящийся в map - C++
Всем добрый день! Имеется такой контейнер. Как обращаться к элементам вектора и как пушбэчить его? map &lt;int,map&lt;int,vector&lt;int&gt; &gt;...

5
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
08.04.2014, 16:01 #2
Цитата Сообщение от unkarjedy Посмотреть сообщение
входит в инициализацию em карты
Это в функцию InitErrorMessages() имеется в виду?
Какой компилятор?
0
unkarjedy
3 / 3 / 0
Регистрация: 13.03.2011
Сообщений: 114
08.04.2014, 16:11  [ТС] #3
Да про неё. Компилятор MinGW.
Visual Studio нормально обрабатывает...
Опять же MinGW один такой же файл (идентичный, разница только в именах) тоже...
А в этом модуле вылетает SEGMENTATION_FAULT и всё
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
08.04.2014, 16:20 #4
unkarjedy, использования глобальных переменных из одного модуля для инициализации глобальных переменных в другом модуле есть?
Одновременно InitErrorMessages() из разных потоков не может вызываться (если они есть конечно)?
0
unkarjedy
3 / 3 / 0
Регистрация: 13.03.2011
Сообщений: 114
08.04.2014, 19:55  [ТС] #5
Нет
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 19.02.2013
Сообщений: 9,046
08.04.2014, 20:51 #6
Цитата Сообщение от unkarjedy Посмотреть сообщение
крашится где-то внутри карты на строке
В какой момент туда попадает? Стек вызовов посмотреть имеет смысл.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.04.2014, 20:51
Привет! Вот еще темы с ответами:

Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std::map? - C++
Здравствуйте. Возможно ли создать контейнер std::map, в котором в качестве значения была бы ссылка на std map? Например: std::map...

Как вставить элемент и вывести элементы на экран в map<string, map<string,int>> ? - C++
У меня есть map&lt;string, map&lt;string,int&gt;&gt;, в него надо добавить элементы (типа Ivanov potato 200) Использовать именно map&lt;string,...

Как вставить map в map - C++
есть такой map map &lt; INT64 , map &lt;INT64 , map&lt; wArray , int &gt; &gt; &gt; tMenu; как его заполнить? пробовал так ...

Emplace в std::map. Как добавить элемент в std::map без копирования? - C++
здравствуйте... есть ли способ не писать так: std::map&lt;int, char&gt; ksa; ksa.emplace(std::piecewise_construct, ...


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

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

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