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

C++

Войти
Регистрация
Восстановить пароль
 
Chainik228
0 / 0 / 1
Регистрация: 18.10.2015
Сообщений: 46
#1

"std::domain_error" в bool-функции - C++

11.08.2016, 07:45. Просмотров 308. Ответов 4
Метки нет (Все метки)

Есть одна функция, которая сохраняет данные json в файл. Когда доходит дело до return, то срабатывает исключение "std::domain_error".

C++
1
2
3
4
5
6
7
8
9
10
11
bool Json::Save ( std::string file )
{
    std::ofstream str(file, std::ios::out | std::ios::trunc );
    if (str.is_open())
    {
        str << this->GetJsonData() << std::endl;
        str.close();
        return true;
    }
    else return false;
}
Кликните здесь для просмотра всего текста
terminate called after throwing an instance of 'std::domain_error'
what(): type must be boolean, but is object


Я не могу понять, почему возвращаемое значение является неким объектом, а не булевым значением. В заголовке и в коде возвращаемые типы везде указаны как bool.
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2016, 07:45     "std::domain_error" в bool-функции
Посмотрите здесь:

namespace "std" has no member "vector" - C++
Собственно такая проблема, мне нужно использовать в программе std::vector, однако VC ругается, мол нет ни каких векторов в std. Люди...

Коллеги что же все такие делает "using namespace std"? - C++
Я понял то что &quot;using namespace st&quot; мы вводим для того что бы не писать &quot;std::cout&lt;&lt;&quot; ну а конкретно, деловым...

Для чего в коде нужна строка "using namespace std"? - C++
у меня возникла проблема при удалении &quot;using namespace std;&quot; перестает работать cout точнее пишет Build FAILED. File2.cpp(11,6):...

Ошибка "неопределенная ссылка" при работе с std::thread - C++
При попытке сделать что-либо с std::thread, выдает ошибку компиляции, &quot;неопределенная ссылка &quot; . К примеру: #include...

Что за подсказки появляются после напечатанного в коде "std" - C++
Есть 3 файла #include &lt;iostream&gt; #ifndef move_h #define move_h namespace nm_move_ { class Move__

Error C2039: list: не является членом "std" - C++
итак: делаю MFC проект. Собственные функции пишу в отдельном MyLibrary.cpp к которому еще прилагается MyLibrary.h. функция написана,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,165
Завершенные тесты: 2
11.08.2016, 11:29     "std::domain_error" в bool-функции #2
Chainik228, а точно эта функция кидает?
Chainik228
0 / 0 / 1
Регистрация: 18.10.2015
Сообщений: 46
11.08.2016, 11:43  [ТС]     "std::domain_error" в bool-функции #3
Отладчик до return'а нигде не ловил исключения. Именно после возвращения он и выкидывает в SIGABRT.
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
11.08.2016, 13:27     "std::domain_error" в bool-функции #4
Chainik228, это исключение кидает функция GetJsonData(). Больше ничего нельзя сказать по этому коду. Озвучь хотя бы какая библиотека для разбора JSON используется.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.08.2016, 14:20     "std::domain_error" в bool-функции
Еще ссылки по теме:

Необработанное исключение в "0x76fd2eec" Microsoft C++: std::bad_alloc - C++
Вот такая ошибка в VS2008, тогда как в 2013 все работает без проблем. Если есть у кого возможность попробуйте запустить код в NetBeans'е....

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

Стоит ли использовать "Вихрь Мерсенна" (std::mt19937)? - C++
Чем он отличается от &quot;обычного&quot; stdlib'ного ГПСЧ? Генерирует ли он более... качественные ПСЧ? И зачем он вообще нужен?

Ошибка C2672 "std::invoke": не найдена соответствующая перегруженная функция - C++
Как исправить ошибки? Ошибка C2672 &quot;std::invoke&quot;: не найдена соответствующая перегруженная функция Ошибка C2893 Сбой при...

Error C2039: Insert: не является членом "std::set<_Kty>" - C++
Ругается компилятор: 1&gt;c:\visual studio 2008\projects\lab1\fibo\fibo\fibo.cpp(19) : error C2039: Insert: не является членом...

Ошибка: отсутствует оператор ">>", соответствующий этим операндам типы операндов: std::is - C++
Помогите или объясните в чем моя ошибка?? Вот программный код! #include &lt;iostream&gt; #include &lt;stdio.h&gt; #include...


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

Или воспользуйтесь поиском по форуму:
Chainik228
0 / 0 / 1
Регистрация: 18.10.2015
Сообщений: 46
11.08.2016, 14:20  [ТС]     "std::domain_error" в bool-функции #5
Сообщение было отмечено автором темы, экспертом или модератором как ответ
https://github.com/nlohmann/json

Теперь я, примерно, понял в каком направление копать.

Добавлено через 22 минуты
Вот сама функция GetJsonData().

C++
1
2
3
4
std::string Json::GetJsonData ()
{
    return this->data.dump(4);
}
Добавлено через 7 минут
Проблема решена.
Оказывается, я неправильно поступил в деструкторе, когда собирался удалять текущие данные.

Я сделал так, думая что это сочтется как проверка на NULL.
C++
1
2
3
4
if (this->data)
{
    /* ... */
}
Соответственно, он жаловался на это условие, так как ожидалось bool, а не данные. Переделал сравнение:
C++
1
2
3
4
if (this->data != NULL)
{
    /* ... */
}
И код стал работать как надо.
Yandex
Объявления
11.08.2016, 14:20     "std::domain_error" в bool-функции
Ответ Создать тему
Опции темы

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