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

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

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

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

08.04.2014, 15:47. Просмотров 656. Ответов 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 минут
При чём есть точно такой же модуль для ошибок другого типа и в нём всё работает... Ничего не вылетает
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.04.2014, 15:47     Инициализация static map
Посмотрите здесь:

инициализация 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...

Static - C++
zagolovok.hpp static int a; основной модуль #include &lt;iostream&gt; #include &quot;zagolovok.hpp&quot; int main

static const? - C++
если мне нужна константа в классе, как ее лучше объявить со static или без? разница будет только в том, что со статиком мне можно будет...

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

Static class c++ - C++
Можно ли сделать класс чисто статическим? То есть не прописывать отдельно для каждой переменой, функции static, а одним разом всех ? ...

static-член - C++
Привет. Как сделать чтобы при каждом создании объекта класса, увеличивался его счетчик. вот сами классы: class Base{ public: ...

Private: static - C++
В хедере есть клас point, клас точек, которые должны иметь нумерацию. В поле private у него есть static атрибут free_id, в который...

Static Library - C++
Привет всем! Нужно проанализировать (понять, что она делает) статичную библиотеку, собранную под Linux (.a), используя Windows. Как это...

Static переменные - C++
Написал небольшую программу, подключил к проекту name.h файл. В нем описание переменных static int a, b; Почему их значения можно...

static class - C++
Хочу создать static class, в котором будет находится static переменная, чтобы она была доступна из разных классов. helper.h static...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
08.04.2014, 20:51     Инициализация static map #6
Цитата Сообщение от unkarjedy Посмотреть сообщение
крашится где-то внутри карты на строке
В какой момент туда попадает? Стек вызовов посмотреть имеет смысл.
Yandex
Объявления
08.04.2014, 20:51     Инициализация static map
Ответ Создать тему
Опции темы

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