|
51 / 51 / 8
Регистрация: 31.10.2012
Сообщений: 481
|
|||||||||||
Работа с абстрактным классом07.01.2016, 21:42. Показов 1842. Ответов 34
Метки нет (Все метки)
Доброго времени суток!
Имеется небольшой класс:
Если же исключить ООП и писать реализацию напрямую в функции main, то проблемы не наблюдается. Как нужно исправить программу, чтобы не получать сегфолт?
0
|
|||||||||||
| 07.01.2016, 21:42 | |
|
Ответы с готовыми решениями:
34
Полиморфизм с абстрактным классом Непонятки с абстрактным классом
|
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
| 07.01.2016, 22:34 | |
|
Ну изначально-то в device нолик. Неудивительно, что при обращении к нему сегфолты возникают. А надо откуда-то взять указатель на полноценный объект. Как-то он должен в Irrlicht создаваться.
0
|
|
|
51 / 51 / 8
Регистрация: 31.10.2012
Сообщений: 481
|
||||||
| 07.01.2016, 22:57 [ТС] | ||||||
|
Nick Alte, нолик -- ясное дело. Если, например, без классов я напишу так:
0
|
||||||
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|||||||
| 08.01.2016, 07:27 | |||||||
|
Гугление официального сайта Irrlicht, переход в туториалы, из них первый - Hello World, общее время меньше минуты. Видим следующее:
1
|
|||||||
|
51 / 51 / 8
Регистрация: 31.10.2012
Сообщений: 481
|
|
| 08.01.2016, 10:27 [ТС] | |
|
Nick Alte, я уроки уже по десять раз прокурил, в очередной нового ничего не открою.
Просто по своей невнимательности не учел, что эта строка должна идти первой. Вопрос закрыт.
0
|
|
|
|
||
| 08.01.2016, 11:13 | ||
|
Не по теме: Хотя на днях как раз на форуме было высказано мнение, что это UB, но не уверен. Думаю тут не С++ стандарт курить надо, а что нибудь типа x86 abi, лень разбираться. Опираясь на мои знания это вроде не UB на x86.
0
|
||
|
1675 / 1047 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
||
| 08.01.2016, 13:28 | ||
|
Вот только конкретно этот метод вполне себе обращается и вполне ожидаемо сегфолтит.
0
|
||
| 08.01.2016, 13:37 | ||
|
Не по теме:
ptr-> идентична (*ptr).. Нужно для себя решить кто из них сильнее :) На уровне языка может и UB, но мне кажется т.к. thiscall тут перетягивает одеяло на себя, то можно считать что все вполне definded. Хотя если забыть об архитектуре и говорить только терминами языка, то да, может UB.
0
|
||
|
50 / 49 / 10
Регистрация: 24.01.2010
Сообщений: 225
|
|
| 08.01.2016, 19:37 | |
|
опс...
не досмотр
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 08.01.2016, 23:38 | |
|
0
|
|
|
|
|||
| 09.01.2016, 07:31 | |||
|
Добавлено через 8 минут Не по теме: Полез гуглить что-нибудь на эту тему, интересную вещь нашел
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||||||||||||||||||||
| 09.01.2016, 10:11 | |||||||||||||||||||||||
|
Не по теме:
разработчики платформы запросто используют не корректные с точки зрения стандарта ходы.
здесь же, как мы видим, квалификатор volatile запрещает компилятору оптимизировать конструкцию. однако, от этого UB не перестает быть UB. и не стоит им уподобляться. эти ребята не просто знают тонкости своего компилятора, но и умеют заставить его по особенному собирать код своих библиотек. к тому же, все эти хаки прозрачны для пользователей. выйдет новая версия, и в новой версии будут другие хаки. а старые запросто перестанут работать. все это прозрачно для тех пользователей, у которых хватило ума не эксплуатировать хаки в собственном коде напрямую. что бы не получилось, как с бустовским typeof. вот где площадка для экспериментов. там используют любые платформо-специфичные хаки. студийная реализация завязалась на баге в Visual Studio 7.1 (автоматический id времени компиляции) после исправления которого, лососнула тунца вплоть до выхода delctype в том, что касается MFC - есть ряд драконовских ограничений. например, связанные с множественным наследованием:
или вот код:
однако, технически, это - сумасшедший каст теплого к мягкому. работая с MFC, нужно быть оч аккуратным, и внимательно читать доки. Добавлено через 12 минут какой путь пришлось пройти аргументам, что бы оказаться на стеке функции. единственная компетенция соглашения о вызове: как упакованы аргументы по итогу. и кстати, компиляторы при оптимизациях имеют полное право покласть на это соглашение с большим прибором. компиляторы закладываются, что код не содержит UB, а значит всякие засранцы не будут писать такой код: (последний пример) Static члены класса а значит можно сэкономить, пробросив аргументы как нибудь через регистры, а не стек. "честный" thiscall будет, только если там элипсис, или volatile, или какие нибудь волшебные слова компилятора: Как гарантировать передачу единственного параметра через стек?
0
|
|||||||||||||||||||||||
|
|
|||||||
| 09.01.2016, 14:43 | |||||||
|
Добавлено через 4 минуты касательно
0
|
|||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||
| 09.01.2016, 17:22 | |||
|
Добавлено через 51 секунду
0
|
|||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||||||
| 09.01.2016, 17:35 | ||||||||
|
я малость поспешил. вот правильная иллюстрация: http://rextester.com/OSFPG49584
потому что указатель p совпадает с началом подобъекта trololo. в то время, как подобъект msvc отстоит от начала объекта на некоторое смещение, определяемое данными-членами и выравниванием. когда нужно запустить метод is_valid, то обращение идет к подобъекту msvc, компилятор автоматически выполняет корректировку смещения. поэтому нулевое p не совпадает с this подобъекта msvc.
0
|
||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 09.01.2016, 19:10 | |
|
0
|
|
| 10.01.2016, 17:13 | |
|
Не по теме: hoggy, не хочу приводить рабочий пример и ассемблерный выхлоп потому что:
0
|
|
| 10.01.2016, 17:13 | |
|
Помогаю со студенческими работами здесь
20
Создать иерархию наследования с абстрактным базовым классом Работа с классом работа с классом Работа с классом работа с классом Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|