Ошибка при работе с boost::any |
Здравствуйте, гость ( Вход | Регистрация )
Ошибка при работе с boost::any |
AD |
9.8.2009, 21:12
Сообщение
#1
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Почему-то вылетает с ошибкой при работе со следующим кодом:
Правда, структуры не имеют конструкторов, но это код библиотеки:
Отладчик выпадает на следующие строки:
Как можно исправить ошибку? |
|
|
BRE |
10.8.2009, 7:59
Сообщение
#2
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
sizeof( any ) == 4, т.е. он хранит указатель на внутренний объект (content)!
Читая file.read((char*)&_types[key], sizeof(_types[key])) ты этот указатель затираешь первыми четырьмя байтами из файла. При разрушении any программа падает. Все логично. Обрати внимание на any_cast<Type>(...)!!! |
|
|
AD |
10.8.2009, 8:12
Сообщение
#3
|
Профессионал Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: 17 |
Цитата sizeof( any ) == 4, т.е. он хранит указатель на внутренний объект (content)! Читая file.read((char*)&_types[key], sizeof(_types[key])) ты этот указатель затираешь первыми четырьмя байтами из файла. При разрушении any программа падает. Все логично. Обрати внимание на any_cast<Type>(...)!!! А как именно поправить я не понял? Прости, если донимаю... |
|
|
BRE |
10.8.2009, 8:20
Сообщение
#4
|
Профессионал Группа: Участник Сообщений: 1112 Регистрация: 6.3.2009 Из: Ростов-на-Дону Пользователь №: 591 Спасибо сказали: 264 раз(а) Репутация: 44 |
А как именно поправить я не понял? Прости, если донимаю... Примерно так:
|
|
|
Текстовая версия | Сейчас: 26.11.2024, 4:21 |