dynamic_cast Segmetation fault |
Здравствуйте, гость ( Вход | Регистрация )
dynamic_cast Segmetation fault |
Count0 |
24.8.2013, 16:18
Сообщение
#1
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 30.7.2011 Пользователь №: 2772 Спасибо сказали: 0 раз(а) Репутация: 0 |
В следующем коде:
При использовании в качестве T непримитивного типа в строке:
происходит Segmetation fault. Хотелось бы понять причины и способы устранения. Благодарю заранее. |
|
|
Iron Bug |
24.8.2013, 21:59
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
надо весь код, где и как используется объект, так непонятно, как создавался объект и что привело к падению. обычно к такой ошибке приводит обращение по нулевому(неинициализированному) указателю.
|
|
|
Count0 |
24.8.2013, 22:50
Сообщение
#3
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 30.7.2011 Пользователь №: 2772 Спасибо сказали: 0 раз(а) Репутация: 0 |
Я только тестиовал данный класс, так что весь пример использования, выдающий ошибку:
И что особенно странно, вот такой код выполняется корректно:
Хотя при повторном присваивании в первом случае должен выполнится сначала деструктор предыдущего экземпляра, потом конструктор нового, если я правильно понимаю. |
|
|
Iron Bug |
24.8.2013, 23:49
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
добавь оператор присваивания:
но!!! тут вместо new и delete нужно использовать умные указатели, иначе будет утечка памяти. ну либо сделать какой-то метод принудительной очистки типа
и использовать его после работы с каждым типом, например:
P.S. вообще, это простое следствие Правила Большой Тройки. часто если его не соблюдают, получают такие ошибки. Сообщение отредактировал Iron Bug - 25.8.2013, 0:30 |
|
|
Count0 |
25.8.2013, 8:15
Сообщение
#5
|
Студент Группа: Новичок Сообщений: 17 Регистрация: 30.7.2011 Пользователь №: 2772 Спасибо сказали: 0 раз(а) Репутация: 0 |
Благодарю за помощь.
|
|
|
Iron Bug |
25.8.2013, 21:13
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
а вообще, такой класс any уже есть в boost. так что можно не строить велосипед, а взять готовый.
|
|
|
Текстовая версия | Сейчас: 2.1.2025, 21:24 |